字典为相同的键添加值

J. *_*Doe 3 python dictionary python-3.6

我有一个字典列表:

[{'name':'Jay', 'value':'1'},{'name':'roc', 'value':'9'},{'name':'Jay', 'value':'7'},{'name':'roc', 'value':'2'}]
Run Code Online (Sandbox Code Playgroud)

我希望它是:

[{'name':'Jay', 'value':'8'},{'name':'roc', 'value':'11'}]
Run Code Online (Sandbox Code Playgroud)

我试过循环,但我无法找到一个可以做到这一点的例子.任何提示或想法将不胜感激.

Psi*_*dom 5

您可以使用defaultdict:

lst = [{'name':'Jay', 'value':'1'},{'name':'roc', 'value':'9'},{'name':'Jay', 'value':'7'},{'name':'roc', 'value':'2'}]
Run Code Online (Sandbox Code Playgroud)

1)每个名称的总和值:

from collections import defaultdict    
result = defaultdict(int)

for d in lst:
    result[d['name']] += int(d['value'])
Run Code Online (Sandbox Code Playgroud)

2)将名称 - 值对转换为列表中的字典:

[{'name': name, 'value': value} for name, value in result.items()]
# [{'name': 'roc', 'value': 11}, {'name': 'Jay', 'value': 8}]
Run Code Online (Sandbox Code Playgroud)

或者,如果您希望值为str类型,请注意@Kevin:

[{'name': name, 'value': str(value)} for name, value in result.items()]
?# [{'name': 'roc', 'value': '11'}, {'name': 'Jay', 'value': '8'}]
Run Code Online (Sandbox Code Playgroud)