从嵌套词典打印数字的乘积

时间:2019-10-17 03:54:48

标签: python dictionary nested key

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

3 个答案:

答案 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