前言
一個Python字典短則包含一個鍵值對,長則可能數以百萬計。所以我們不會遍歷字典可不行。因爲Python字典是由一系列鍵值對組成的,所以我們可以遍歷字典的所有鍵值對、鍵或值。
1.遍歷字典中所有的鍵值對
我們還是從一個學生字典開始:
student = {'num': '123456', 'name': 'kelvin', 'age': 18}
前面文章中我們知道怎麼訪問student字典中任何一項的信息,但如果要想訪問字典中的所有信息該怎麼辦呢?
我們可以使用一個 for
循環來遍歷這個字典:
student = {'num': '123456', 'name': 'kelvin', 'age': 18}
for key, value in student.items():
print("\nKey: " + key)
print("Value: " + str(value)) # 因爲age對應的是數字類型,所以用str()方法將其轉化成字符串
從代碼可以看到,我們聲明瞭兩個變量 key
和 value
去存儲鍵值對中的鍵和值。它們可以任意取名。
你甚至可以這樣寫:
for a, b in student.items():
這樣寫是沒有關係的,不過爲了見名知義,我還是建議叫 key
和 value
。
眼尖的小夥伴可能注意到 in
後面跟着的不是字典本身,而是 student.items()
,它返回的是一個鍵值對列表,事實上如果你 print(student.items())
的話,輸出結果如下:
dict_items([('num', '123456'), ('name', 'kelvin'), ('age', 18)])
可見確實是鍵值對組成的元組列表。
接下來,for
循環依次將每一個鍵值對元組存儲到指定的兩個變量中(key
和value
)。
運行上述遍歷student字典的代碼:
注意:遍歷字典時,鍵值對的返回順序可能會與存儲順序不同。事實上,這點對我們編寫程序並無影響。
2.遍歷字典的所有鍵
有的時候,我們可能並不關心值是多少,可以使用方法 keys()
,keys()
方法會返回一個鍵列表。
student = {'num': '123456', 'name': 'kelvin', 'age': 18}
for key in student.keys():
print(key)
上述代碼會打印出字典中所有的鍵:
與遍歷所有鍵值對代碼進行比較,會發現 for
後面僅跟着一個變量,而且 in
關鍵字後面遍歷的對象是 student.keys()
,我們試着 print(student.keys())
可以看到 keys()
方法返回的是一個鍵列表。
我們甚至可以把 keys()
方法省略,因爲遍歷字典的時候,如果你在 for
後面僅聲明一個變量,Python會默認遍歷所有的鍵並依次將鍵賦值給這個變量。
因此,我們代碼也可以這樣寫:
student = {'num': '123456', 'name': 'kelvin', 'age': 18}
for key in student:
print(key)
輸出結果和上面是一樣的。
Python提供了非常靈活的語法,你可以自由地選擇自己喜歡的寫法。
3.遍歷字典中的所有值
有時候我們僅需要遍歷字典中的所有值而不關心鍵到底是什麼,可以使用方法 values()
,values()
方法會返回一個值列表。
如果我們想打印出學生字典中所有的值:
student = {'num': '123456', 'name': 'kelvin', 'age': 18}
for value in student.values():
print(value)
運行這段代碼,效果如下:
確實打印出了student字典裏所有的值。
能夠打印出所有值的關鍵在於 student.values()
方法返回了一個值列表。
Python遍歷這個值列表並依次將值賦給 value
變量,然後打印輸出。
結尾語
本文主要講解了Python遍歷字典的三種方式,應該還是比較簡單的。
筆者一直力求將複雜艱澀的概念講得淺顯易懂,但因爲個人能力或許考慮的並不周全。如果您對文中講的內容有任何疑惑,歡迎私信和我交流。