基于id键识别重复字典并合并其子列表的Python解决方案
合并同ID字典中的sublist
需求:现有一个包含字典的列表,部分字典的id键重复,需要将同id的字典合并,把它们的sublist合并到同一个字典中。
输入示例
[ { "id": "1", "sublist": [ { "key":"1" } ] }, { "id": "1", "sublist": [ { "key":"2" } ] }, { "id": "2", "sublist": [ { "key":"3" } ] } ]
期望输出
[ { "id": "1", "sublist": [ { "key":"1" }, { "key":"2" } ] }, { "id": "2", "sublist": [ { "key":"3" } ] } ]
解决代码
original_list = [ {"id": "1", "sublist": [{"key": "1"}]}, {"id": "1", "sublist": [{"key": "2"}]}, {"id": "2", "sublist": [{"key": "3"}]} ] # 用字典按id分组存储合并后的结果 merged_groups = {} for item in original_list: current_id = item["id"] if current_id not in merged_groups: # 首次遇到该id,初始化条目 merged_groups[current_id] = { "id": current_id, "sublist": item["sublist"].copy() } else: # 已有该id的条目,追加sublist内容 merged_groups[current_id]["sublist"].extend(item["sublist"]) # 将分组后的字典值转为列表,得到最终结果 merged_list = list(merged_groups.values()) print(merged_list)
代码说明
- 用
merged_groups字典作为临时容器,以id为键,存储每个id对应的合并后字典。 - 遍历原列表时,若当前id未在字典中,就创建新条目并复制原字典的
sublist;若已存在,则用extend把当前sublist的内容追加进去。 - 最后把字典的所有值转为列表,就是合并后的结果。
内容的提问来源于stack exchange,提问作者cvargas9720
相关产品推荐
相关产品推荐

