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

Python根据files_id合并JSON中binary变量及大文件处理咨询

按files_id拼接binary字符串的实现方案

方案可行性

用字典存储files_id与binary的映射是完全可行的,这是处理这类"多对一"合并场景的常规做法,逻辑清晰且效率足够应对3566行的数据量。

具体实现步骤

1. 正确读取JSON文件

你之前的代码未将读取内容赋值给变量,这里给出规范的读取方式(假设JSON文件是包含多个对象的列表,每个对象包含files_id和binary字段):

import json

# 用with语句自动管理文件句柄,避免资源泄漏
with open('1234567.json', 'r', encoding='utf-8') as f:
    data = json.load(f)

2. 遍历数据构建映射并拼接字符串

初始化空字典,遍历每一条数据,根据files_id是否存在来决定是初始化值还是拼接字符串:

# 存储files_id和对应拼接后binary的字典
files_binary_map = {}

for item in data:
    file_id = item['files_id']
    binary_str = item['binary']
    
    if file_id in files_binary_map:
        # 已存在该ID,追加当前binary字符串
        files_binary_map[file_id] += binary_str
    else:
        # 首次出现该ID,直接赋值
        files_binary_map[file_id] = binary_str

3. 验证结果

处理完成后,可直接通过字典获取任意files_id对应的拼接结果:

# 示例:查看指定files_id的拼接结果
print(files_binary_map.get('目标files_id'))

超大规模文件优化(可选)

如果后续文件规模大幅增长,可采用逐行解析的方式,避免一次性加载整个文件到内存:

files_binary_map = {}

with open('1234567.json', 'r', encoding='utf-8') as f:
    for line in f:
        # 解析每行的JSON对象(需确保每行是独立的JSON结构)
        item = json.loads(line.strip())
        file_id = item['files_id']
        binary_str = item['binary']
        
        if file_id in files_binary_map:
            files_binary_map[file_id] += binary_str
        else:
            files_binary_map[file_id] = binary_str

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 00:30:44