我的python列表数据是这样的:
[{'partner': res.partner(985,), 'account_id': account.account(193,), 'price_total': 420.0}, {'partner': res.partner(985,), 'account_id': account.account(194,), 'price_total': 260.0}, {'partner': res.partner(985,), 'account_id': account.account(95,), 'price_total': 600.0}]
想要得到的结果:
dict_list = [{'partner_id': res.partner(985,),'data': [{'account_id': account.account(193,), 'price_total': 420}, {'account_id': account.account(194,), 'price_total': 260}, {'account_id': account.account(95,), 'price_total': 600.0}]}]
答案 0 :(得分:0)
您可以遍历初始列表数据,保存partner
的值,然后将其从字典中删除,以便只有{'account_id':193, 'price_total':420.0}
。现在浏览输出结果列表,查看partner_id
是否已经存在。如果是这样,请附加上面引用的字典。如果没有,请将新字典以及相应的伙伴ID和数据放入输出列表中。
输入(由于我无权访问您的res
和account
类,因此进行了修改):
dataset = [{'partner': 985,
'account_id': 193,
'price_total': 420.0},
{'partner': 985,
'account_id': 194,
'price_total': 260.0},
{'partner': 985,
'account_id': 95,
'price_total': 600.0}]
代码(对不起,我在代码中使用res
作为结果的缩写,它将与您的类名冲突):
result = []
for data in dataset:
partner_id = data['partner']
del data['partner']
if partner_id in [res['partner_id'] for res in result]:
for res in result:
if res['partner_id'] == partner_id:
res['data'].append(data)
else:
result.append({'partner_id':partner_id, 'data':[data]})
print(result)
输出:
[{'partner_id': 985, 'data': [{'account_id': 193, 'price_total': 420.0}, {'account_id': 194, 'price_total': 260.0}, {'account_id': 95, 'price_total': 600.0}]}]