[英]How do I sum a list of dictionaries by key?
我有一個字典列表。 每個字典都有不同的大小,並且可以有不同和相似的鍵名。
aList = [{
'Hits': 3,
'Blues': 4,
'Classical': 6,
'Metal': 8,
'Rock': 4,
'Funk': 5,
'Hip Hop': 5,
'Rap': 9,
'Easy Listening': 3
}, {
'Rap': 10,
'Jazz': 4,
'Hip Hop': 6,
'Dance': 3,
'Classical': 9,
'Blues': 3,
'Opera': 9,
'Easy Listening': 3,
'Country': 9,
'Pop': 2,
'Hits': 7
}, {
'Blues': 1,
'Metal': 9,
'Hits': 8,
'Dance': 2,
'Funk': 9,
'Jazz': 1,
'Classical': 2
}]
如何存儲每個鍵名對應的所有值的總和?
您肯定需要使用collections
模塊中的內置Counter
class。 這是工作代碼示例:
from collections import Counter
aList = [{
'Hits': 3,
'Blues': 4,
'Classical': 6,
'Metal': 8,
'Rock': 4,
'Funk': 5,
'Hip Hop': 5,
'Rap': 9,
'Easy Listening': 3
}, {
'Rap': 10,
'Jazz': 4,
'Hip Hop': 6,
'Dance': 3,
'Classical': 9,
'Blues': 3,
'Opera': 9,
'Easy Listening': 3,
'Country': 9,
'Pop': 2,
'Hits': 7
}, {
'Blues': 1,
'Metal': 9,
'Hits': 8,
'Dance': 2,
'Funk': 9,
'Jazz': 1,
'Classical': 2
}]
counter = Counter()
for d in aList:
counter.update(d)
print(dict(counter))
# Outputs:
# {'Hits': 18, 'Blues': 8, 'Classical': 17, 'Metal': 17, 'Rock': 4, 'Funk': 14, 'Hip Hop': 11, 'Rap': 19, 'Easy Listening': 6, 'Jazz': 5, 'Dance': 5, 'Opera': 9, 'Country': 9, 'Pop': 2}
您可以使用collections. Counter
collections. Counter
from collections import Counter
totals = Counter()
for elem in aList:
totals.update(elem)
print(totals)
Counter({'Rap': 19, 'Hits': 18, 'Classical': 17, 'Metal': 17, 'Funk': 14, 'Hip Hop': 11, 'Opera': 9, 'Country': 9, 'Blues': 8, 'Easy Listening': 6, 'Jazz': 5, 'Dance': 5, 'Rock': 4, 'Pop': 2})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.