[英]Understanding accessing the key and value in dictionaries Python
我解決以下問題的代碼有效,但有人可以幫助我理解這一點:為什么我的代碼只訪問鍵而不是值? 這一直是我理解字典的一個一貫問題——這周剛開始學習它們。 我預計要么會出錯,要么會出現一些混亂的國家和數字。
您能否解釋一下我將如何編寫代碼以將密鑰單獨添加到新列表中?
創建字典 golds 中的國家列表,並將該列表分配給變量名國家。 不要對此進行硬編碼。
golds = {"Italy": 12, "USA": 33, "Brazil": 15, "China": 27, "Spain": 19, "Canada": 22, "Argentina": 8, "England": 29}
countries = []
accum = 0
for item in golds:
countries.append(item)
要遍歷您執行的鍵:
for k in golds.keys():
對於值:
for v in golds.values():
對於兩者:
for k, v in golds.items():
Python 創作者必須選擇以上之一作為金幣for item in golds
的默認體驗。 他們決定選擇第一個。
但為什么?
正如 Sven 和 Amitai 所指出的,將其作為迭代鍵的默認行為與key in my_dict
的能力是一致的。 我想得越多value in my_dict
就是一個壞主意。
另外,我認為 Python 想與當時許多其他語言處理這種情況的方式保持一致,因此提出了一個問題,哪個主要語言是第一個循環遍歷字典的語言? 我試圖做一些研究來弄清楚這一點,但我找不到第一個做出這個選擇的語言:(
迭代字典時,您將僅迭代鍵。 你的一段代碼:
for item in golds:
countries.append(item)
就是這樣做的。
一個更簡單的方法是:
countries = list(golds)
因為list
構造函數遍歷一個序列,並且在dict
的情況下,這意味着它的鍵。 雖然上述方法有效,但它有點晦澀難懂。 更好的選擇是:
countries = list(golds.keys())
keys
方法返回所有字典鍵的序列(Python 3 中的迭代器,只是 Python 2 中的列表)。 這比以前的方法更好(恕我直言),因為它清楚地說明了代碼的意圖,使其更具可讀性。
歡迎來到 Python 中令人驚嘆的詞典世界:) 一開始可能會有些混亂,但別擔心,沒關系。
關於您的問題:當您遍歷字典時,它僅返回當前項目的鍵(這就是您的代碼有效的原因)。 如果您想訪問其他數據,有幾種方法會有所幫助:
dict.values()
或dict.keys()
:這些方法將返回字典中的值或鍵列表,如下所示:
golds = {"Italy": 12, "USA": 33, "Brazil": 15, "China": 27, "Spain": 19, "Canada": 22, "Argentina": 8, "England": 29}
countries = []
accum = 0
# Using .keys() (default behavior)
for item in golds.keys():
countries.append(item)
# countries -> ["Italy", "USA", "Brazil", "China", "Spain", "Canada", "Argentina", "England"]
# Using .values()
for item in golds.values():
countries.append(item)
# countries -> [12, 33, 15, 27, 19, 22, 8, 29]
dict.items()
: 此方法將返回包含當前項的鍵和值的元組列表,在大多數情況下非常有用。 要使用它,您必須以不同的方式使用您的for
:
# DISCLAIMER: key and value are just variable names, you can name them however you want
for key, value in golds.items():
# key -> 'Italy'
# value -> 12
...
希望有幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.