簡體   English   中英

在字典中,我無法在循環中打印不同的值。 我為所有元素打印相同的值

[英]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.

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