簡體   English   中英

打印嵌套字典中的數字產品

[英]Printing product of numbers from Nested Dictionary

db = {'A':{(1,2): 3, (4,5): 6, (7,8): 9}, 'B': {(9,8):7, (6,5): 4, (3,2): 1 }}

我有一個字典數據庫,我正在嘗試打印這些值,但我的代碼不起作用。 我知道這與打印 function 中的 i.keys 有關,但如何讓它打印正確的產品。

for i in db.values():
    for x in i.keys():
        if x[1] >= 1:
            print(x[1]*i.values)

它應該打印:

6
30
72
56
20
2

下面的解決方案將打印包含列表內兩個數字(元組)乘積的列表,我希望每個元組內只有兩個數字。

List comprehension簡化了代碼並減少了代碼行數。

value = [  x[0].__mul__(x[1]) for i in db.values() for x in i.keys() ]

Output

[2, 20, 56, 72, 30, 6]

在第 4 行,變量i是一個字典,因此當您執行x[1]*i.values時,您將 integer ( x[1] ) 乘以來自dict的內置方法values 即使你放了括號, i.values()也會從你當前的二級字典中返回一個值的集合。 因此,您需要使用鍵x ,以便i[x]將返回 integer:

for i in db.values():
    for x in i.keys():
        if x[1] >= 1:
            print(x[1]*i[x])

解決問題的另一種方法:

for i in db.values():
    for (_, j), value in i.items():
        if j >= 1:
            print(j*value)

您可以使用reversed的 function 以相反的順序生成字典值和子字典的鍵:

for d in reversed(db.values()):
    for a, b in reversed(d):
        print(a * b)

這輸出:

6
30
72
56
20
2

暫無
暫無

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

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