Python如何将值为列表的字典拆分写入多个独立JSON文件
按索引拆分字典值列表生成独立JSON文件
需求说明
现有字典对象所有键对应的值均为列表类型,需将相同索引的对应条目拆分,写入相互独立的JSON文件。
示例待处理数据:
data_to_write = {"Names":["name1", "name2", "name3"], "email":["mail1", "mail2", "mail3"]}
期望输出3个JSON文件:data1.json、data2.json、data3.json,每个文件存储同索引的键值对,以data1.json为例,标准JSON内容为:
{ "Names": "name1", "email": "mail1" }
其余文件按相同规则,依次存储索引为1、2的对应条目。
原有代码问题
原有实现存在3个核心错误:
- 三层循环逻辑错误,会遍历所有列表的所有元素,无法按索引对齐同位置的键值
- 使用追加模式
a打开文件,多次写入会导致文件内容重复、JSON格式非法 - 每次只写入单个键值对,没有组装成完整的单条记录字典
正确实现代码
import os import json # 配置项 path_to_output_dir = "./your_output_dir" # 替换为实际输出目录路径 data_to_write = {"Names":["name1", "name2", "name3"], "email":["mail1", "mail2", "mail3"]} # 可选:校验所有值列表长度一致,避免索引越界 list_lengths = [len(value_list) for value_list in data_to_write.values()] if len(set(list_lengths)) != 1: raise ValueError("字典所有值对应的列表长度必须一致,才可按索引拆分") file_count = list_lengths[0] for idx in range(file_count): # 组装当前索引对应的完整记录 current_record = {key: value_list[idx] for key, value_list in data_to_write.items()} # 生成输出文件路径,文件名从1开始编号 output_path = os.path.join(path_to_output_dir, f"data{idx+1}.json") # 一次性写入完整JSON,使用w覆盖模式,格式化输出提高可读性 with open(output_path, "w", encoding="utf-8") as f: json.dump(current_record, f, indent=4, ensure_ascii=False)
代码说明
- 提前校验所有值列表长度,避免因列表长度不一致触发索引越界错误
- 用字典推导式直接组装单条记录,逻辑简洁、执行效率高
- 写入文件时指定
encoding="utf-8"避免中文乱码,indent=4输出带缩进的格式化JSON,ensure_ascii=False保证非ASCII字符正常存储 - 使用
w写入模式打开文件,每个文件只写入一次,不会产生内容残留或格式错误
内容的提问来源于stack exchange,提问作者Ahmad Anis
相关产品推荐
相关产品推荐

