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

如何基于index字段合并两个来自独立JSON文件的字典列表

基于index字段合并两个JSON字典列表的高效方法

问题背景

现有两个独立JSON文件,内容均为字典列表,每个字典都包含index字段。需要基于index将两个列表合并,最终每个字典同时包含index、name、desc字段。示例数据如下:

列表1(含name字段)

[
  {"index": 217, "name": "Battery"},
  {"index": 218, "name": "Fluffy"},
  {"index": 219, "name": "Dazzling"},
  {"index": 220, "name": "Soul-Heart"}
]

列表2(含desc字段)

[
  {"index": 217, "desc": "Text info 2"},
  {"index": 218, "desc": "will be very informative"},
  {"index": 219, "desc": "dont know what else i could write here"},
  {"index": 220, "desc": "Boosts my wallet"}
]

期望合并结果

[
  {"index": 217, "name": "Battery", "desc": "Text info 2"},
  {"index": 218, "name": "Fluffy", "desc": "will be very informative"},
  {"index": 219, "name": "Dazzling", "desc": "dont know what else i could write here"},
  {"index": 220, "name": "Soul-Heart", "desc": "Boosts my wallet"}
]

由于数据量较大,需要选择时间复杂度低、内存友好的合并方案,以下是两种实用方法:


方案1:纯Python哈希映射(推荐中小到大规模数据)

核心思路是将其中一个列表转换为以index为键的字典,把查找操作的时间复杂度从O(n)降到O(1),整体时间复杂度为O(n+m)(n、m分别为两个列表的长度),避免低效的双重循环。

代码实现

import json

# 读取两个JSON文件
with open('list1.json', 'r', encoding='utf-8') as f:
    list_with_names = json.load(f)
with open('list2.json', 'r', encoding='utf-8') as f:
    list_with_descs = json.load(f)

# 将含desc的列表转为index: desc的映射字典
desc_mapping = {item['index']: item['desc'] for item in list_with_descs}

# 合并数据
merged_result = []
for item in list_with_names:
    merged_item = item.copy()  # 避免修改原数据
    # 匹配对应desc,若index不存在则设为空字符串(可根据需求调整默认值)
    merged_item['desc'] = desc_mapping.get(item['index'], '')
    merged_result.append(merged_item)

# 保存合并结果
with open('merged_result.json', 'w', encoding='utf-8') as f:
    json.dump(merged_result, f, indent=2, ensure_ascii=False)

优势

  • 内存占用低:仅额外存储index与desc的映射关系
  • 兼容性强:无需依赖第三方库
  • 容错性好:通过get方法处理index不匹配的情况,避免报错

方案2:Pandas合并(适合超大规模数据)

如果数据量达到百万级甚至更大,Pandas的merge方法底层基于优化过的算法,处理速度更快,还能灵活处理不同的匹配规则(交集、并集等)。

代码实现

import pandas as pd
import json

# 读取JSON数据为DataFrame
df_names = pd.read_json('list1.json')
df_descs = pd.read_json('list2.json')

# 基于index字段合并,how参数控制匹配规则
# how='inner':仅保留两边都存在的index;how='outer':保留所有index;how='left':保留list1的所有index
merged_df = pd.merge(df_names, df_descs, on='index', how='inner')

# 将DataFrame转回字典列表并保存
merged_result = merged_df.to_dict('records')
with open('merged_result.json', 'w', encoding='utf-8') as f:
    json.dump(merged_result, f, indent=2, ensure_ascii=False)

优势

  • 处理超大规模数据效率更高
  • 支持多种匹配规则,满足复杂需求
  • 可快速扩展后续数据清洗、分析操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 23:01:09