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

Python如何将循环生成的多组字典列表导出到同一JSON文件

问题原因

你当前的导出逻辑存在两个核心问题,导致仅能保留单个字典内容:

  1. 写文件代码放在循环内部,每次以w(覆盖写)模式打开文件,会直接清空上一次循环写入的内容
  2. 每次循环都直接给end_result["Services"]赋值,会覆盖之前存储的service字典列表

解决方案

最优方案是先在循环中收集所有生成的service字典,等全部循环执行完成后,一次性组装为目标结构写入JSON文件,既保证结构正确,也减少不必要的IO操作。

完整示例代码

import json

# 循环启动前初始化空列表,存储所有生成的service字典
all_services = []

# 替换为你原本的大循环逻辑
for item in your_loop_iterator:
    # 这里是你原有的单个service字典生成逻辑
    current_service = {
        "Name": f"Service{item}",
        "Products": {
            # 你的产品属性生成逻辑
            "product1": "yes",
            "product2": "no"
        }
    }
    # 将生成的单个service加入总列表
    all_services.append(current_service)

# 所有循环结束后,统一组装为目标结构写入文件
end_result = {"Services": all_services}
with open("json_test.json", "w", encoding="utf-8") as outputfile:
    # 加ensure_ascii=False避免中文被转义,不需要可以移除
    json.dump(end_result, outputfile, indent=4, ensure_ascii=False)

特殊场景适配

如果你的数据量极大,内存无法一次性存储所有service字典,可以选择生成JSON Lines格式(每行一个独立JSON对象),适合增量写入:

# 循环内部每次生成service后直接追加写入
with open("json_test.jsonl", "a", encoding="utf-8") as outputfile:
    outputfile.write(json.dumps(current_service, ensure_ascii=False) + "\n")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 01:24:04