You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何将同id的多个字典键值合并为单个字典

同ID字典项合并实现方法

不用找特殊工具,Python标准库就能快速实现这个需求,核心逻辑是按id字段分组,再把同组下name子字典的键值对合并到一起就行,不需要额外安装第三方包。

标准库实现(无依赖,兼容性最好)

from collections import defaultdict

def merge_same_id_dict(input_list):
    id_map = defaultdict(dict)
    for single_item in input_list:
        # 按id归组,合并name下的所有键值
        id_map[single_item['id']].update(single_item['name'])
    # 转成你要的列表结构输出
    return [{"id": item_id, "name": name_info} for item_id, name_info in id_map.items()]


# 测试调用
list_1 = [{'id': '123', 'name': {'new': 'kevin'}},
          {'id': '123', 'name': {'old': 'alan'}},
          {'id': '456', 'name': {'new': 'jason'}},
          {'id': '456', 'name': {'old': 'jack'}}]

output = merge_same_id_dict(list_1)

运行后output的内容和你预期完全一致:

[
    {'id': '123', 'name': {'new': 'kevin', 'old': 'alan'}},
    {'id': '456', 'name': {'new': 'jason', 'old': 'jack'}}
]

说明

  • 这个写法时间复杂度是O(n),只需要遍历一次原列表,哪怕列表里有上万条数据性能也足够
  • 兼容性覆盖Python3全版本,如果后续除了name之外还有其他需要合并的子字典字段,直接在循环里对应加update逻辑即可,改造成本很低

如果你日常数据处理已经装了pandas,还可以写得更短

import pandas as pd

output = (pd.DataFrame(list_1)
          .groupby('id')['name']
          .apply(lambda x: {k:v for d in x for k,v in d.items()})
          .reset_index()
          .to_dict('records'))

运行结果和上面完全一致,适合已经在做数据分析场景的情况用。

内容的提问来源于stack exchange,提问作者rookie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 04:27:18