我有两个字典,如下所述,我需要将字典列表中的每个元素与其他字典列表中的各个元素相乘并打印结果。我已经成功地将一个列表相乘,如何使其变得动态?
dict1 = {0: [1, 1, 0, 1, 1, 0], 1: [1, 0, 1, 1, 1, 0]}
dict2 = { 0: [16, 0, 2, 0, 0, 0], 1: [15, 0, 0, 0, 1, 0]}
result = { 0: [16, 0, 0, 0, 0, 0], 1:[15, 0, 0, 0, 1, 0]}
from operator import mul
result = list( map(mul, dict1[0], dict2[0]) )
答案 0 :(得分:4)
您可以将每个列表压缩在一起,并使用dict这样的理解:
result = {i :[x*y for x, y in zip(dict1[i], dict2[i])] for i in dict1.keys()}
这假定dict1和dict2共享相同的键
答案 1 :(得分:-1)
欢迎堆栈用户
您可以使用DICT COMPREHENSIONS来完成。无需压缩。
from operator import mul
dict1 = {0: [1, 1, 0, 1, 1, 0], 1: [1, 0, 1, 1, 1, 0]}
dict2 = {0: [16, 0, 2, 0, 0, 0], 1: [15, 0, 0, 0, 1, 0]}
result = {key: list(map(mul, dict1[key], dict2[key])) for key in dict1.keys() }
result
{0: [16, 0, 0, 0, 0, 0], 1: [15, 0, 0, 0, 1, 0]}
PEP 274-听写理解 https://www.python.org/dev/peps/pep-0274/
它的内容类似于:对于键列表中的每个键,请根据键和列表创建一个字典(map(mul,dict1 [key],dict2 [key]))
希望有帮助