字典值总和列表 [英] sum list of dictionary values
问题描述
我有一个这样的字典列表:
I have a list of dictionary in this form :
[
{'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},
]
并且我想像这样对列表中的每个元素按键求和:
and I want to sum the values in this by key for each element in the list like that :
{
'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文档对其进行了最好的描述,但实际上Counter
是一种特殊的字典,其中所有值都是整数.您可以传递任何密钥(包括不存在的密钥)并将其添加.例如:
What you want is the Counter
collection type. The Python docs on collections describe it best, but essentially a Counter
is a special kind of dictionary where all the values are integers. You can pass any key, including nonexistent ones, and add to them. For example:
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提供了此答案的一种变体,该变体在Counter
对象上本地使用了update()
方法.我建议将其作为此处的最佳答案
@timgeb provides a variation on this answer which makes native use of the update()
method on Counter
objects. I would recommend that as the best answer here
这篇关于字典值总和列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!