我有两个字典,每个值都是一个 float 列表
d1 = {'a': [10,11,12], 'b': [9,10,11], 'c': [8,9,10], 'd': [7,8,9]}
d2 = {'a': [1,1,1], 'b': [2,3,2], 'c': [1,2,2], 'd': [4,3,4]}
我想减去字典 d1-d2 之间的值并得到结果:
d3 = {'a': [9,10,11], 'b': [7,7,9], 'c': [7,7,9], 'd': [3,5,5] }
我在这个网站上找到了关于如何减去每个键只有一个浮点值的字典,以及如何在每个字典内而不是在字典之间减去列表的条目。
此外,还需要考虑速度,因为我每次要使用不同的词典运行此程序约 200,000 次。
最佳答案
使用字典理解
zip
:
>>> {k:[x-y for x, y in zip(d1[k], d2[k])] for k in d1}
{'a': [9, 10, 11], 'c': [7, 7, 8], 'b': [7, 7, 9], 'd': [3, 5, 5]}
或 map
:
>>> from operator import sub
>>> {k:map(sub, d1[k], d2[k]) for k in d1}
{'a': [9, 10, 11], 'c': [7, 7, 8], 'b': [7, 7, 9], 'd': [3, 5, 5]}
关于python - 减去字典中的所有值是值是 float 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21336634/