沒錯,在下開學了
網課真的。。讓人哭笑不得
網課(X)憋笑大會(√)
C先生笑得真暖啊,但是通過屏幕偷偷看,笑容總會有些降溫/委屈巴巴
之前學習爬蟲的時候,接觸到了HTML字典和鍵值對的表達方式,需要趕緊補補課
單週的星期三課少,所以走起~
字典是一種可變容器模型,且可存儲任意類型對象
字典的每個鍵值對()用冒號分割,每對之間用逗號分割,整個字典包括在花括號之中
語法
d = {key1 : value1, key2 : value2}
變量如其名,是鍵,是值
鍵必須是唯一的,但是值不必
值可以取任何數據類型,但鍵必須是不可變的,如字符串,數字或元組
一個簡單的字典實例:
dict = {'Alice':'1234', 'Bob':'4371', 'Coco':'3258'}
也可以這樣創建字典:
dict1 = {'abc':123}
dict2 = {'abc':123, 98.6:37}
訪問字典裏的值
把鍵和值一一配對的意義是什麼呢?
我們可以通過鍵查找到值,就像是C++中的map
之所以叫ta字典,應該就是因爲ta和字典一樣,可以利用索引查找到對應的內容
dict = {'Name':'Alice','Age':'19','School':'SEU'}
print("dict['Name']:", dict['Name']);
print("dict['School']:", dict['School']);
### Output
dict['Name']: Alice
dict['School']: SEU
當然,我們不能查找字典裏沒有的鍵
dict = {'Name':'Alice','Age':'19','School':'SEU'}
print("dict['Class']:", dict['Class']);
### Output
Traceback (most recent call last):
File "D:\Py\test1.py", line 2, in <module>
print("dict['Class']: ", dict['Class']);
KeyError: 'Class'
修改字典
我們可以在外部直接通過中括號,修改或添加鍵值對:
dict = {'Name':'Alice','Age':'19','School':'SEU'}
dict['Age'] = '20'
dict['Class'] = 'One'
print("dict['Age']:", dict['Age']);
print("dict['Class']:", dict['Class']);
### Output
dict['Age']: 20
dict['Class']: One
刪除字典
我們可以利用del語句,實現刪除字典的單個元素,清空字典,或刪除字典
dict = {'Name':'Alice','Age':'19','School':'SEU'}
del dict['Name'] # 刪除單個元素
dict.clear() # 清空字典
del dict # 刪除字典
特別注意
- 字典值可以是任何的Python對象,既可以是標準的對象,也可以是用戶定義的類型,但是鍵不行
- 不允許同一個鍵出現兩次,創建時如果同一個鍵被賦值兩次,後一個值會覆蓋前一個值
- 鍵是不可修改的,所以可以用數字,字符串或元組充當,但是不能用列表
dict = {'Name':'Alice','Age':'19','School':'SEU','Name':'Linda'}
print("dict['Name']:",dict['Name'])
### Output
dict['Name']: Linda
字典內置函數&&方法
字典內置函數:
函數 | 用途 |
---|---|
len(dict) | 計算字典元素個數,即鍵的個數 |
str(dict) | 輸出字典,以可打印的字符串表示 |
type(variable) | 返回輸入的變量類型,如果變量是字典就返回字典類型 |
dict = {'Name':'Alice','Age':'19','School':'SEU'}
>>> len(dict)
3
>>> str(dict)
"{'Name': 'Alice', 'Age': '19', 'School': 'SEU'}"
>>> type(dict)
<class 'dict'>
字典內置方法:
函數 | 用途 |
---|---|
.clear() | 刪除字典內的所有元素 |
.copy() | 返回一個字典的淺複製 |
.fromkeys(seq[,value]) | 創建一個新字典,以序列 seq 中元素做字典的鍵,val 爲字典所有鍵對應的初始值 |
.get(key,default=None) | 返回指定鍵的值,如果值不在字典中返回 default 值 |
key in dict | 如果鍵在字典 dict 裏返回 True,否則返回 False |
.items() | 以列表返回可遍歷的(鍵,值)元組數組 |
.keys() | 返回一個迭代器,可以使用 list() 來轉換爲列表 |
.setdefault(key,default=None) | 和 get() 類似,但如果鍵不存在於字典中,將會添加鍵並將值設爲 default |
.update(dict2) | 把字典dict2的鍵值對更新到 dict 裏 |
.values() | 返回一個迭代器,可以使用 list() 來轉換成列表 |
.pop(key[,default]) | 刪除字典給定鍵 key 所對應的值,返回值爲被刪除的值。key 值必須給出,否則返回 default 值 |
.popitem | 隨機返回並刪除字典中的最後一對鍵值 |
>>> dict1 = {'Name':'Coco_T','Age':'18','School':'SEU'}
>>> dict2 = dict1.copy()
>>> dict2
{'Name': 'Coco_T', 'Age': '18', 'School': 'SEU'}
>>> dict2.fromkeys(['Major','Class'],'?')
{'Major': '?', 'Class': '?'}
>>> dict1.get('Name')
'Coco_T'
>>> 'School' in dict1
True
>>> dict1.items()
dict_items([('Name', 'Coco_T'), ('Age', '18'), ('School', 'SEU')])
>>> dict1.keys()
dict_keys(['Name', 'Age', 'School'])
>>> dict1.values()
dict_values(['Coco_T', '18', 'SEU'])
>>> dict1.pop('Age')
'18'
>>> dict1.popitem()
('Age', '18')
>>> dict1
{'Name': 'Coco_T', 'School': 'SEU'}