Python列表分组和总和

Pan*_*ang 2 python dictionary list

假设我有以下列表:

[{'name': 'Amy', 'count': 1}, {'name': 'Amy', 'count': 2}, {'name': 'Peter', 'count': 1}]
Run Code Online (Sandbox Code Playgroud)

我怎么能将它分组并计算总数以获得以下结果:

[{'name': 'Amy', 'count': 3}, {'name': 'Peter', 'count': 1}]
Run Code Online (Sandbox Code Playgroud)

谢谢.

Jun*_*sor 5

你可以使用collecions.Counter:

from collections import Counter
l = [
    {'name': 'Amy', 'count': 1},
    {'name': 'Amy', 'count': 2}, 
    {'name': 'Peter', 'count': 1}
]
c = Counter()
for v in l:
    c[v['name']] += v['count']
Run Code Online (Sandbox Code Playgroud)

结果:

>>> c
Counter({'Amy': 3, 'Peter': 1})
>>> [{'name': name, 'count': count} for name, count in c.items()]
[{'count': 3, 'name': 'Amy'}, {'count': 1, 'name': 'Peter'}]
Run Code Online (Sandbox Code Playgroud)