2024-04-19 13:37:46 发布
网友
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
在第4行,变量i是一个字典,因此当您执行x[1]*i.values时,您将用一个整数(x[1])乘以来自dict的内置方法values。即使放入括号,i.values()也将返回当前二级词典中的值集合。因此,您需要使用键x,这样i[x]将返回一个整数:
i
x[1]*i.values
x[1]
dict
values
i.values()
x
i[x]
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)
下面的解决方案将打印列表中包含两个数字(元组)的乘积,我希望每个元组中只有两个数字
List comprehension简化了代码并减少了代码行数
List comprehension
value = [ x[0].__mul__(x[1]) for i in db.values() for x in i.keys() ]
输出
[2, 20, 56, 72, 30, 6]
可以使用reversed函数按相反顺序生成dict值和子dict的键:
reversed
for d in reversed(db.values()): for a, b in reversed(d): print(a * b)
这将输出:
在第4行,变量
i
是一个字典,因此当您执行x[1]*i.values
时,您将用一个整数(x[1]
)乘以来自dict
的内置方法values
。即使放入括号,i.values()
也将返回当前二级词典中的值集合。因此,您需要使用键x
,这样i[x]
将返回一个整数:另一种解决问题的方法:
下面的解决方案将打印列表中包含两个数字(元组)的乘积,我希望每个元组中只有两个数字
List comprehension
简化了代码并减少了代码行数输出
可以使用
reversed
函数按相反顺序生成dict值和子dict的键:这将输出:
相关问题 更多 >
编程相关推荐