如何组合python词典列表中的值

yan*_*v14 1 python dictionary

我有一个字典列表,如下所示:

l = [{'name': 'john', 'amount': 50}, {'name': 'al', 'amount': 20}, {'name': 'john', 'amount': 80}]
Run Code Online (Sandbox Code Playgroud)

有没有办法组合/合并匹配的名称值字典和总和金额?

Mar*_*ers 7

您可以使用collections.Counter()对象将名称映射到金额,并在进行时对它们求和:

from collections import Counter

summed = Counter()
for d in l:
    summed[d['name']] += d['amount']
result = [{'name': name, 'amount': amount} for name, amount in summed.most_common()]
Run Code Online (Sandbox Code Playgroud)

然后结果也按数量排序(最高的第一个):

>>> from collections import Counter
>>> l = [{'name': 'john', 'amount': 50}, {'name': 'al', 'amount': 20}, {'name': 'john', 'amount': 80}]
>>> summed = Counter()
>>> for d in l:
...     summed[d['name']] += d['amount']
... 
>>> summed
Counter({'john': 130, 'al': 20})
>>> [{'name': name, 'amount': amount} for name, amount in summed.most_common()]
[{'amount': 130, 'name': 'john'}, {'amount': 20, 'name': 'al'}]
Run Code Online (Sandbox Code Playgroud)