簡體   English   中英

在 for 循環中使用“key: value”對打印字典

[英]Print the dict with “key: value” pairs in a for loop

我想遍歷 dict, spam ,並以"key: value"的格式打印結果。 我的代碼有問題,產生了不同的結果。

有沒有辦法糾正輸出? 為什么我得到這個輸出?

spam = {'color': 'red', 'age': '42', 'planet of origin': 'mars'}

for k in spam.keys():
    print(str(k) + ': ' + str(spam.values()))

得到的結果:

color: dict_values(['red', '42', 'mars'])
age: dict_values(['red', '42', 'mars'])
planet of origin: dict_values(['red', '42', 'mars'])

預期結果:

color: red
age: 42
planet of origin: mars

您應該改為使用dict.items ,因為dict.keys只遍歷鍵,然后打印dict.values() ,它返回dict所有值。

spam = {'color': 'red', 'age': '42','planet of origin': 'mars'}

 for k,v in spam.items():
     print(str(k)+': '  + str(v))

dict.values()返回字典中所有值的列表。 為什么不進行密鑰查找?

for k in spam.keys():
     print(str(k)+': '  + spam[k])

或者甚至更好:

for k, v in spam.items():
    print('{}: {}'.format(k, v))

str(spam.values())更改為spam[k] 第一個選項給出字典中的所有值,第二個選項產生屬於當前鍵k的值。

你可以這樣做:

spam = {'color': 'red', 'age': '42','planet of origin': 'mars'}


for k in spam.keys():

    print(k+  ":"  +spam[k] )

你試過了嗎?

for k in spam:
    print(str(k)+':'+str(spam[k]))

試試下面的代碼,

s={'name': 'you', 'number': 123, 'password': '555', 'amt': 800}


for i in s:
    print(i,"=>" ,s[i])

按照 mathias711 的建議去做! 實際上,您的代碼對str(spam.values())就是寫入 dict 的所有值。 通過執行str(spam[k])您可以獲得與 dict 'spam' 中的鍵 'k' 相關聯的值。 如果您真的希望按特定順序輸出,您應該有一個列表,其中所有鍵都按此順序排序,因為默認情況下字典的鍵沒有排序。

您的代碼看起來像這樣:

spam = {'color': 'red', 'age': '42','planet of origin': 'mars'} 

liste_ordered_for_output['color', 'age', 'planet of origin']


for key in liste_ordered_for_output:
    print(str(key)+': '  + str(spam[key]))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM