Python 3.x 是否有办法改革ptyhon';s列表和dic?

Python 3.x 是否有办法改革ptyhon';s列表和dic?,python-3.x,dictionary,arraylist,Python 3.x,Dictionary,Arraylist,以下是一份清单: 测试=[ {'name':'David','money':10}, {'name':'David','money':20}, {'name':'Scart','money':50}, ] 我想把考试改成这样: 结果=[ {'name':大卫,'money':30,'count':2}, {'name':斯卡特,'money':50,'count':1} ] 测试长度可能是500+,非常感谢 这是您的测试列表 >>> test=[ ... {'name':'

以下是一份清单:

测试=[
{'name':'David','money':10},
{'name':'David','money':20},
{'name':'Scart','money':50},
]
我想把考试改成这样:

结果=[
{'name':大卫,'money':30,'count':2},
{'name':斯卡特,'money':50,'count':1}
]
测试长度可能是500+,非常感谢

这是您的测试列表

>>> test=[
... {'name':'David','money':10},
... {'name':'David','money':20},
... {'name':'Scart','money':50},
... ]
您可以首先构建一个dict,将名称映射到金额

>>> amounts_by_name = {}
>>> for d in test:
...     amounts_by_name.setdefault(d['name'], []).append(d['money'])
...
(如果不存在,
setdefault
将创建
(d[名称])
条目。)金额将附加到列表中:

>>> amounts_by_name
{'David': [10, 20], 'Scart': [50]}
现在,您可以将dict转换为一个列表:

>>> [{'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}]

为什么希望结果是一个列表?也许你应该把结果格式化成字典。例如,result={'David':{'money':30,'count':2}。然后构造结果变得更简单。噢,谢谢,还有……如何得到这个(ಥ_ಥ)