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
相关产品推荐
相关产品推荐

