Python之旅——字典

沒錯,在下開學了
網課真的。。讓人哭笑不得
網課(X)憋笑大會(√)
C先生笑得真暖啊,但是通過屏幕偷偷看,笑容總會有些降溫/委屈巴巴

之前學習爬蟲的時候,接觸到了HTML字典和鍵值對的表達方式,需要趕緊補補課
單週的星期三課少,所以走起~


字典是一種可變容器模型,且可存儲任意類型對象
字典的每個鍵值對(key=>valuekey=>value)用冒號分割,每對之間用逗號分割,整個字典包括在花括號之中

語法

d = {key1 : value1, key2 : value2}

變量如其名,keykey是鍵,valuevalue是值
鍵必須是唯一的,但是值不必
值可以取任何數據類型,但鍵必須是不可變的,如字符串,數字或元組

一個簡單的字典實例:

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'}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章