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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 22:42:23