[{'A': 5, 'B': 10, 'C': 15}, {'A': 5, 'B': 25, 'C': 17, 'D': 30, }]
[{'A': 5, 'G': 10, 'Q': 15}, {'A': 5, 'B': 25, 'M': 17, 'T': 30, }]
合并后
[{'A':10,'B':10,'C':15,'G':10,'Q':15},{'A':10,'B':50,'C':17,'D':30,'M':17,'T':30}]
答案 0 :(得分:1)
尝试使用collections.Counter
合并根据zip
创建的两个配对字典之间的计数:
from collections import Counter
l1 = [{'A': 5, 'B': 10, 'C': 15}, {'A': 5, 'B': 25, 'C': 17, 'D': 30, }]
l2 = [{'A': 5, 'G': 10, 'Q': 15}, {'A': 5, 'B': 25, 'M': 17, 'T': 30, }]
result = [Counter(x) + Counter(y) for x, y in zip(l1, l2)]
print(result)
输出:
[Counter({'C': 15, 'Q': 15, 'A': 10, 'B': 10, 'G': 10}), Counter({'B': 50, 'D': 30, 'T': 30, 'C': 17, 'M': 17, 'A': 10})]
Counter
是dict
的子类,因此您可以将其视为普通字典。如果您希望结果看起来像dict
,则可以将其强制转换为[{'A': 10, 'B': 10, 'C': 15, 'G': 10, 'Q': 15}, {'A': 10, 'B': 50, 'C': 17, 'D': 30, 'M': 17, 'T': 30}]
。
为什么以上所述在docs中有效:
提供了几种数学运算来组合Counter对象以产生多组(计数大于零的counter)。加减法通过将相应元素的计数相加或相减来组合计数器。交集和并集返回相应计数的最小值和最大值。每个操作都可以接受带符号计数的输入,但是输出将排除计数为零或更少的结果。