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