如何合并列表中team键重复的复杂嵌套字典
合并团队资产字典列表
我有一个字典列表,每个字典对应一个团队及其资产。同一团队可能对应多个字典,每个字典包含该团队的部分资产类型。需要将同一团队的字典合并,每个团队仅保留一个字典,整合其所有的资产类型。
原始数据
list_of_dicts = [ { "team": "X", "description": "A description of X", "types": [ { "type": "TYPEA", "assets": { "high_value": [ {"id": "asset_1_id", "name": "asset_1_name"}, {"id": "asset_2_id", "name": "asset_2_name"}, ], "low_value": [ {"id": "asset_3_id", "name": "asset_3_name"}, {"id": "asset_4_id", "name": "asset_4_name"}, ], }, }, { "type": "TYPEB", "assets": { "high_value": [ {"id": "asset_1_id", "name": "asset_1_name"}, {"id": "asset_2_id", "name": "asset_2_name"}, ], "low_value": [ {"id": "asset_3_id", "name": "asset_3_name"}, {"id": "asset_4_id", "name": "asset_4_name"}, ], }, }, ], }, { "team": "X", "description": "A description of X", "types": [ { "type": "TYPEC", "assets": { "high_value": [ {"id": "asset_1_id", "name": "asset_1_name"}, {"id": "asset_2_id", "name": "asset_2_name"}, ], "low_value": [ {"id": "asset_3_id", "name": "asset_3_name"}, {"id": "asset_4_id", "name": "asset_4_name"}, ], }, } ], }, ]
实现代码
merged_teams = {} for team_item in list_of_dicts: team_name = team_item["team"] if team_name not in merged_teams: # 复制当前团队字典,避免修改原数据 merged_teams[team_name] = team_item.copy() # 独立复制types列表,防止后续操作影响原数据 merged_teams[team_name]["types"] = team_item["types"].copy() else: # 将当前团队的types追加到已合并的types列表中 merged_teams[team_name]["types"].extend(team_item["types"]) # 转换为目标列表格式 result_list = list(merged_teams.values())
结果说明
执行上述代码后,result_list即为每个团队仅对应一个字典、整合所有资产类型的结果,示例输出如下:
[ { "team": "X", "description": "A description of X", "types": [ {"type": "TYPEA", "assets": {...}}, {"type": "TYPEB", "assets": {...}}, {"type": "TYPEC", "assets": {...}}, ], } ]
内容的提问来源于stack exchange,提问作者James
相关产品推荐
相关产品推荐

