从嵌套字典打印数字积

2024-04-19 13:37:46 发布

您现在位置:Python中文网/ 问答频道 /正文

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

Tags: 代码in功能数据库fordbif字典
3条回答

在第4行,变量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简化了代码并减少了代码行数

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的键:

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

这将输出:

6
30
72
56
20
2

相关问题 更多 >