【发布时间】:2019-11-02 12:07:02
【问题描述】:
我想合并基于相同键值对的字典列表。我有一个字典列表作为
[{'id':1, 'total':100,'free_from':250},{'id':2,....},{'id':1,......}]
我想从中创建一个具有相同结构的新字典列表,但如果两个字典的 id 相同,则应添加它们的总数,而不是将字典添加到新列表中。
这是字典列表
products = [{'id':1,'total':20,'free_from':250,},{'id':2,'total':30,'free_from':150},{'id':1,'total':10,'free_from':250,},{'id':1,'total':10,'free_from':250},{'id':2,'total':40,'free_from':150, }]
预期结果是
[{ 'id': 1,'total': 40, 'free_from': 250}, {'id': 2,'total': 70, 'free_from': 150}]
我通过使用以下方法设法实现了这一点。但是,如果有人可以帮助我找到更好的方法来做到这一点,那将是很大的帮助。
category_delivery_list=[]
products = [
{
'id':1,
'total':20,
'free_from':250,
},{
'id':2,
'total':30,
'free_from':150,
},{
'id':1,
'total':10,
'free_from':250,
},{
'id':1,
'total':10,
'free_from':250,
},{
'id':2,
'total':40,
'free_from':150,
}
]
for data in products:
if category_delivery_list:
index = None
for count, cat in enumerate(category_delivery_list):
if cat['id'] == data['id']:
index=count
if index >= 0:
category_delivery_list[index]['total'] += data['total']
category_delivery_list[index]['free_from'] = data['free_from']
else:
category_delivery_list.append({
'id':data['id'],
'total':data['total'],
'free_from':data['free_from']
})
else:
category_delivery_list.append({
'id':data['id'],
'total':data['total'],
'free_from':data['free_from']
})
print(category_delivery_list)
【问题讨论】:
标签: python-3.x dictionary