Python dict字典方法完全攻略(全)

2021-09-26 02:27:36 字數 3904 閱讀 6920

我們知道,字典的資料型別為 dict,我們可使用dir(dict)來檢視該類包含哪些方法。在互動式直譯器中輸入dir(dict)命令,將看到如下輸出結果:

>>> dir(dict)

['clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']

這 3 個方法之所以放在一起介紹,是因為它們都用來獲取字典中的特定資料。keys() 方法用於返回字典中的所有鍵;values() 方法用於返回字典中所有鍵對應的值;items() 用於返回字典中所有的鍵值對。

例如:

a = 

print(a.keys())

print(a.values())

print(a.items())

執行結果為:

dict_keys(['數學', '語文', '英語'])

dict_values([95, 89, 90])

dict_items([('數學', 95), ('語文', 89), ('英語', 90)])

注意,在 python 2.x 中,這三個方法的返回值是列表型別。但在 python 3 中,並不是我們常見的列表和元組型別,因為 python 3不希望使用者直接操作這幾個方法的返回值。如果想使用返回的資料,有以下 2 種方法:

使用 list() 函式,將它們返回的資料轉換成列表,例如:

a = 

b = list(a.keys())

print(b)

執行結果為:

['數學', '語文', '英語']
2.也可以利用多重賦值的技巧,利用迴圈結構將鍵或值分別賦給不同的變數,比如說:

a = 

for k in a.keys():

print(k,end=' ')

print("\n---------------")

for v in a.values():

print(v,end=' ')

print("\n---------------")

for k,v in a.items():

print("key:",k," value:",v)

執行結果為:

數學 語文 英語

---------------

95 89 90

---------------

key: 數學 value: 95

key: 語文 value: 89

key: 英語 value: 90

copy() 方法用於返回乙個具有相同鍵值對的新字典,例如:

a = 

b = a.copy()

print(b)

執行結果為:

可以看到,通過 copy() 方法,就可以將字典 a 的資料拷貝給字典 b。

注意,copy() 方法所遵循的拷貝原理,既有深拷貝,也有淺拷貝。拿拷貝字典 a 為例,copy() 方法只會對最表層的鍵值對進行深拷貝,也就是說,它會再申請一塊記憶體用來存放 ;而對於某些列表型別的值來說,此方法對其做的是淺拷貝,也就是說,b 中的 [1,2,3] 的值不是自己獨有,而是和 a 共有。

例如:

a = 

b = a.copy()

#向 a 中新增新鍵值對,由於b已經提前將 a 所有鍵值對都深拷貝過來,因此 a 新增新鍵值對,不會影響 b。

a['four']=100

print(a)

print(b)

#由於 b 和 a 共享[1,2,3](淺拷貝),因此移除 a 中列表中的元素,也會影響 b。

a['three'].remove(1)

print(a)

print(b)

執行結果為:

從執行結果不難看出,對 a 增加新鍵值對,b 不變;而修改 a 某鍵值對中列表內的元素,b也會相應改變。

update() 方法可使用乙個字典所包含的鍵值對來更新己有的字典。

在執行 update() 方法時,如果被更新的字典中己包含對應的鍵值對,那麼原 value 會被覆蓋;如果被更新的字典中不包含對應的鍵值對,則該鍵值對被新增進去。

例如:

a = 

a.update()

print(a)

執行結果為:

從上面的執行過程可以看出,由於被更新的 dict 中已包含 key 為「one」的鍵值對,因此更新時該鍵值對的 value 將被改寫;但如果被更新的 dict 中不包含 key 為「four」的鍵值對,那麼更新時就會為原字典增加乙個鍵值對。

pop() 方法用於獲取指定 key 對應的 value,並刪除這個鍵值對。

如下方法示範了 pop() 方法的用法:

a = 

print(a.pop('one'))

print(a)

執行結果為:

1

此程式中,第 2 行**將會獲取「one」對應的值 1,並刪除該鍵值對。

popitem() 方法用於隨機彈出字典中的乙個鍵值對。

注意,此處的隨機其實是假的,它和 list.pop() 方法一樣,也是彈出字典中最後乙個鍵值對。但由於字典儲存鍵值對的順序是不可知的,因此 popitem() 方法總是彈出底層儲存的最後乙個鍵值對。

如下**示範了 popitem() 方法的用法

a = 

print(a)

# 彈出字典底層儲存的最後乙個鍵值對

print(a.popitem())

print(a)

執行結果為:

('three', 3)

實際上,由於 popitem 彈出的是乙個元組,因此我們也可以通過序列解包的方式,用兩個變數分別接收 key 和 value。

例如如下**:

a = 

# 將彈出項的key賦值給k、value賦值給v

k, v = a.popitem()

print(k, v)

執行結果為:

three 3
setdefault() 方法也用於根據 key 來獲取對應 value 的值。但該方法有乙個額外的功能,即當程式要獲取的 key 在字典中不存在時,該方法會先為這個不存在的 key 設定乙個預設的 value,然後再返回該 key 對應的 value。

也就是說,setdefault() 方法總能返回指定 key 對應的 value;如果該鍵值對存在,則直接返回該 key 對應的 value;如果該鍵值對不存在,則先為該 key 設定預設的 value,然後再返回該 key 對應的 value。

如下**示範了 setdefault() 方法的用法:

a = 

# 設定預設值,該key在dict中不存在,新增鍵值對

print(a.setdefault('four', 9.2))

print(a)

# 設定預設值,該key在dict中存在,不會修改dict內容

print(a.setdefault('one', 3.4))

print(a)

執行結果為:

9.2

1

python dict 字典 操作

名稱 唯一性資料型別 可變性key 鍵 唯一 數字 字串 元組 不可value 值 不唯一 任意可變 dict assert dict 通過指定key值訪問對應的value dict assert dict say hello assert dict 20 hi 60 不存在時 報keyerror ...

Python dict 字典 詳細總結

d d.has key name 如果有key返回true d.get name 如果沒有key返回none 賦值可以是字元,數字,列表,元組,字典。d age 28 d friends john megan alex del d name 刪除指定key d.clear 清空字典d name 如果...

Python dict 字典 詳細總結

d d.has key name 如果有key返回true d.get name 如果沒有key返回none 賦值可以是字元,數字,列表,元組,字典。d age 28 d friends john megan alex del d name 刪除指定key d.clear 清空字典d name 如果...