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

Python中如何按id键匹配合并两个JSON对象数组

高效合并按id匹配的JSON数组方案

你现有嵌套循环的实现时间复杂度为O(n*m),数据量较大时性能损耗严重,且代码存在语法问题(初始化的no3是字典,直接调用append方法会触发KeyError)。以下是两种效率更高的实现方案:

方案1:字典映射法(时间复杂度O(n+m),无第三方依赖)

逻辑:先将其中一个数组转换为以id为键的查找字典,单次遍历另一个数组即可完成合并,查找操作时间复杂度为O(1)。

# 先把no2转为id为键的字典,方便快速查找
no2_map = {item['id']: item for item in no2}
# 遍历no1合并对应id的字段,最终结果为列表
no3 = [{**item, **no2_map.get(item['id'], {})} for item in no1]

如果需要保留仅在no2中存在的id,可追加如下逻辑:

# 收集no1中已存在的id集合
no1_ids = {item['id'] for item in no1}
for item in no2:
    if item['id'] not in no1_ids:
        no3.append(item)

方案2:Pandas合并法(适合万条以上大规模数据场景)

如果处理的数据量极大,可以用pandas的内置合并操作进一步优化性能:

import pandas as pd

df1 = pd.DataFrame(no1)
df2 = pd.DataFrame(no2)
# 按id列外合并,保留两边所有id的数据,可将how参数改为inner只保留两边共有的id
merged_df = pd.merge(df1, df2, on='id', how='outer')
# 转回字典列表格式
no3 = merged_df.to_dict('records')

效率对比

  • 嵌套循环方案:1万条数据级别的合并需要约1亿次匹配操作,耗时可达数秒
  • 字典映射方案:1万条数据仅需2万次操作,耗时仅为毫秒级

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 06:06:05