db = {'A':{(1,2): 3, (4,5): 6, (7,8): 9}, 'B': {(9,8):7, (6,5): 4, (3,2): 1 }}
我有一个词典数据库,我正在尝试打印值,但是我的代码不起作用。我知道这与打印功能中的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
答案 0 :(得分:1)
下面的解决方案将在列表中打印包含两个数字(元组)的乘积的列表,我希望每个元组中只有两个数字。
List comprehension
简化了代码并减少了代码行数。
value = [ x[0].__mul__(x[1]) for i in db.values() for x in i.keys() ]
输出
[2, 20, 56, 72, 30, 6]
答案 1 :(得分:0)
在第4行,变量i
是一个字典,因此在执行x[1]*i.values
时,您要将整数(x[1]
)乘以内置方法{{1} }来自values
。即使加上括号,dict
也会从当前的第二级字典中返回值的集合。因此,您需要使用键i.values()
,以便x
将返回整数:
i[x]
解决问题的另一种方法:
for i in db.values():
for x in i.keys():
if x[1] >= 1:
print(x[1]*i[x])
答案 2 :(得分:0)
您可以使用reversed
函数以相反的顺序生成字典值和子字典的键:
for d in reversed(db.values()):
for a, b in reversed(d):
print(a * b)
这将输出:
6
30
72
56
20
2