[英]In a dictionary, i can't print the different values in the loop. I print the same value for all elements
代碼為循環的每個元素打印x
,但問題是它為所有元素打印相同的x
值,因此每個人的數字相同。
相反,如果在mydict
中,而不是x
我使用sum(value)/ len(value) for key,value in mylist.items()
中的值,那么值將被正確打印。
但我想要在第二行中創建變量x
並在mydict
中使用它們。
我如何在mydict
中使用x
並正確打印列表中每個元素的所有值?
重要提示:我不想直接sum(value)/ len(value) for key,value in list.items()
,但我會使用x
mylist = {('Jack', 'Grace', 8, 9, '15:00'): [0, 1, 1, 5],
('William', 'Dawson', 8, 9, '18:00'): [1, 2, 3, 4],
('Natasha', 'Jonson', 8, 9, '20:45'): [0, 1, 1, 2]
}
for key, value in mylist.items():
x= sum(value)/ len(value)
mydict = {key:
x for key,value in mylist.items()}
print(mydict)
就像 Nitesh、Christian、John 和 Karl 所說的那樣,您正在更新整個列表,而不僅僅是單個元素,只是 scope 不是解決方法。 X 每次都成為 mydict 的每個鍵的值,而不僅僅是那個特定的鍵/值對。 只需將 x 分別分配給每個鍵:
mylist = {('Jack', 'Grace', 8, 9, '15:00'): [0, 1, 1, 5],
('William', 'Dawson', 8, 9, '18:00'): [1, 2, 3, 4],
('Natasha', 'Jonson', 8, 9, '20:45'): [0, 1, 1, 2]
}
mydict = {} # initialize mydict
for key, value in mylist.items():
x= sum(value)/ len(value)
mydict[key] = x # assign x to key
print(mydict)
這是 output:
{('Jack', 'Grace', 8, 9, '15:00'): 1.75, ('William', 'Dawson', 8, 9, '18:00'): 2.5, ('Natasha', 'Jonson', 8, 9, '20:45'): 1.0}
當您使用列表理解時,實際上是在啟動一個 for 循環。 在您的示例中,計算了 x ,然后創建了 dict ,而沒有為每個術語重新計算 x 術語。 我不知道你為什么同時使用 for 循環和列表理解。 您正在為 for 循環的每次迭代創建一個新的 dict,但將新的 x 值分配給列表理解中的每個鍵。 只需使用一個 - 列表理解。 IE
dict = {key: sum(value)/ len(value) for key,value in list.items()}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.