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

如何在循环中更新JSON对象并保留所有迭代数据?

解决循环生成全组合JSON的问题

核心问题是你用字典的update()方法会直接覆盖已有键值对,循环结束后自然只剩最后一组数据。要保存所有state、city、vote的组合,得把每个组合作为元素存入列表,再嵌套到主字典里。

修正后的代码

import json

# 初始化主结构,用列表存所有组合
info = {
    "name": "master",
    "entries": []
}

states = ["MN", "AZ", "IL"]
cities = ["One", "Two", "Three"]
votes = ["No", "Yes", "Maybe"]

for state in states:
    for city in cities:
        for vote in votes:
            # 生成单组数据的字典
            single_entry = {
                "state": state,
                "cities": {
                    "name": city,
                    "votes": {"decision": vote}
                }
            }
            # 把单组数据追加到列表里
            info["entries"].append(single_entry)

print(json.dumps(info, indent=4))

正确输出示例(截取部分)

{
    "name": "master",
    "entries": [
        {
            "state": "MN",
            "cities": {
                "name": "One",
                "votes": {
                    "decision": "No"
                }
            }
        },
        {
            "state": "MN",
            "cities": {
                "name": "One",
                "votes": {
                    "decision": "Yes"
                }
            }
        },
        // 省略其余25组组合...
        {
            "state": "IL",
            "cities": {
                "name": "Three",
                "votes": {
                    "decision": "Maybe"
                }
            }
        }
    ]
}

重要说明

  • 必须用列表存储多组数据:字典的update()是替换同键的值,而列表的append()是新增元素,不会覆盖之前的内容。
  • 修正了原期望输出的语法错误:JSON要求严格的键值对结构,不能在name: "master"后直接放对象列表,必须给这个列表加一个键(比如entries),否则生成的JSON不符合规范,API无法解析。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 05:15:38