我有这种形式的字典清单:
[ {'signal_8': 1, 'signal_1': 7, 'signal_10': 5, 'signal_5': 2, 'signal_2': 5, 'signal_6': 3, 'signal_4': 9, 'signal_3': 6, 'signal_9': 4, 'signal_7': 8}, {'signal_8': 1, 'signal_1': 7, 'signal_10': 5, 'signal_5': 2, 'signal_2': 5, 'signal_6': 3, 'signal_4': 9, 'signal_3': 6, 'signal_9': 4, 'signal_7': 8}, {'signal_8': 1, 'signal_1': 7, 'signal_10': 5, 'signal_5': 2, 'signal_2': 5, 'signal_6': 3, 'signal_4': 9, 'signal_3': 6, 'signal_9': 4, 'signal_7': 8}, ]
我想像这样通过列表中的每个元素通过键求和:
{ 'signal_8': 3, 'signal_1': 21, 'signal_10': 15, 'signal_5': 6, 'signal_2': 15, 'signal_6': 9, 'signal_4': 27, 'signal_3': 18, 'signal_9': 12, 'signal_7': 24 }
我尝试过的是以下内容:
result = {} sm = 0 for elm in original_list: for k,v in elm.items(): sm += v result[k] = sm print(result)
但它仍然不起作用。
您想要的是Counter集合类型。集合上的Python文档最能描述它,但是从本质上讲aCounter是一种特殊的字典,其中所有值都是整数。您可以传递任何密钥(包括不存在的密钥)并将其添加。例如:
Counter
from collections import Counter original_list = [ {'signal_8': 1, 'signal_1': 7, 'signal_10': 5, 'signal_5': 2, 'signal_2': 5, 'signal_6': 3, 'signal_4': 9, 'signal_3': 6, 'signal_9': 4, 'signal_7': 8}, {'signal_8': 1, 'signal_1': 7, 'signal_10': 5, 'signal_5': 2, 'signal_2': 5, 'signal_6': 3, 'signal_4': 9, 'signal_3': 6, 'signal_9': 4, 'signal_7': 8}, {'signal_8': 1, 'signal_1': 7, 'signal_10': 5, 'signal_5': 2, 'signal_2': 5, 'signal_6': 3, 'signal_4': 9, 'signal_3': 6, 'signal_9': 4, 'signal_7': 8}, ] result = Counter() for elem in original_list: for key, value in elem.items(): result[key] += value print(result)
编辑:@timgeb提供了此答案的一种变体,该变体update()在Counter对象上本地使用了该方法。我建议将其作为此处的最佳答案
update()