我目前从我的数据库中删除了以下数据(4 个字典列表):
raw_data = [{'budget_id': 1, 'name': 'Maria', 'amount': 980, 'user': '10', 'gift': 'Phone', 'cost': 325}, {'budget_id': 1, 'name': 'Maria', 'amount': 980, 'user': '10', 'gift': 'Flower', 'cost': 195}, {'budget_id': 2, 'name': 'Scott', 'amount': 2100, 'user': '10', 'gift': 'Paris Trip', 'cost': 599}, {'budget_id': 2, 'name': 'Scott', 'amount': 2100, 'user': '10', 'gift': 'Ring', 'cost': 1200}]
我想自动合并共享相同“budget_id”的每个字典,以便最后得到以下内容(2 个字典列表):
final_data = [{'name': ['Maria'], 'cost': [195, 325], 'gift': ['Phone', 'Flower'], 'budget_id': [1], 'user': ['10'], 'amount': [980]}, {{'name': ['Scott'], 'cost': [599, 1200], 'gift': ['Paris Trip', 'Ring'], 'budget_id': [2], 'user': ['10'], 'amount': [2100]}
这个想法是它不应该被硬编码,因为从网站传入的词典数量会逐渐移动并减少加班时间。
到目前为止,我已经找到了一个硬编码的解决方案,可以让我成功地合并第一本和第二本字典:
Merge_Init = {}
for key in (fibud.keys() | sebud.keys()):
if key in final_data[0]: Merge_Init.setdefault(key, []).append(final_data[0][key])
if key in final_data[1]: Merge_Init.setdefault(key, []).append(final_data[1][key])
print(Merge_Init)
final_merge = {a:list(set(b)) for a, b in Merge_Init.items()}
print("New Dict without Duplicates:", final_merge)
导致 :
New Dict without Duplicates: {'user': ['10'], 'gift': ['Phone', 'Flower'], 'name': ['Maria'], 'amount': [980], 'budget_id': [1], 'cost': [195, 325]}
注意这一次,赠品的花费稍微倒过来了,应该是[325, 195]。
您能否协助找到一个解决方案来循环遍历每个预算并在它们共享相同的 budget_id 时合并它们,而无需任何硬编码解决方案(如“final_data[0]”)同时保持数据完整性?
婷婷同学_
MM们
斯蒂芬大帝
相关分类