这是一个列表:
test=[
{'name':'David','money':10},
{'name':'David','money':20},
{'name':'Scart','money':50},
]
我想对此进行测试:
result=[
{'name':David,'money':30,'count':2},
{'name':Scart,'money':50,'count':1}
]
测试的长度可能超过500,非常感谢!
答案 0 :(得分:0)
这是您的测试列表。
>>> test=[
... {'name':'David','money':10},
... {'name':'David','money':20},
... {'name':'Scart','money':50},
... ]
您可以首先构建将名称映射到金额的字典
>>> amounts_by_name = {}
>>> for d in test:
... amounts_by_name.setdefault(d['name'], []).append(d['money'])
...
(setdefault
将创建(d[name], [])
条目,如果它不存在。)金额被附加到列表中:
>>> amounts_by_name
{'David': [10, 20], 'Scart': [50]}
现在,您可以将字典变成列表:
>>> [{'name': name, 'money': sum(amounts), 'count': len(amounts)} for name, amounts in amounts_by_name.items()]
[{'name': 'David', 'money': 30, 'count': 2}, {'name': 'Scart', 'money': 50, 'count': 1}]