的Python集团在字典
问题描述:
的列表中有多个键我的字典类的列表:的Python集团在字典
[ {'price': 100, 'product_id': 30089, 'grade_id': 24, 'qty': 1.0},
{'price': 200, 'product_id': 30089, 'grade_id': 22, 'qty': 1.0},
{'price': 100, 'product_id': 30089, 'grade_id': 24, 'qty': 5.0},
{'price': 300, 'product_id': 30993, 'grade_id': 22, 'qty': 1.0} ]
现在我想用2个键(产品和grade_id)和最终的结果,使集团通过名单将是一个新的列表,如:
[ {'price': 200, 'product_id': 30089, 'grade_id': 24, 'qty': 6.0},
{'price': 200, 'product_id': 30089, 'grade_id': 22, 'qty': 1.0},
{'price': 300, 'product_id': 30993, 'grade_id': 22, 'qty': 1.0}]
答
l=[ {'price': 100, 'product_id': 30089, 'grade_id': 24, 'qty': 1.0},
...: {'price': 200, 'product_id': 30089, 'grade_id': 22, 'qty': 1.0},
...: {'price': 100, 'product_id': 30089, 'grade_id': 24, 'qty': 5.0},
...: {'price': 300, 'product_id': 30993, 'grade_id': 22, 'qty': 1.0} ]
d={}
for x in l:
...: p_id = x['product_id']
...: g_id = x['grade_id']
...: key = str(p_id) + '_' + str(g_id)
...: if not key in d:
...: d[key] = {'price': x['price'] , 'product_id': p_id , 'grade_id': g_id, 'qty': x['qty']}
...: else:
...: d[key]['price'] += x['price']
...: d[key]['qty'] += x['qty']
l1 = [d[x] for x in d]
l1
[{'grade_id': 22, 'price': 200, 'product_id': 30089, 'qty': 1.0},
{'grade_id': 22, 'price': 300, 'product_id': 30993, 'qty': 1.0},
{'grade_id': 24, 'price': 200, 'product_id': 30089, 'qty': 6.0}]
请提供您有任何相关的代码。 – Ffisegydd 2014-12-09 11:44:14
为什么突然有6.0数量?我正在查看你的输入和输出,并且无法弄清楚你打算做什么。 – runDOSrun 2014-12-09 11:48:25
6.0来自1.0 + 5.0(同样的价格是200 - > 100 + 100)。 – Ffisegydd 2014-12-09 11:50:59