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

如何用Python通过for循环生成指定结构的JSON文件(从其他JSON取名称)

解决Python循环生成完整JSON结构的问题

问题根源

你的代码在循环中每次都会重新创建dictionary变量,导致之前循环生成的内容被完全覆盖,最终只保留最后一次循环的结果。如果循环过程中还执行了多次JSON输出/写入操作,就会生成多个独立的JSON对象,而非你需要的单一大JSON结构。

修正后的代码

import json

# 假设data是从外部JSON文件解析得到的字典
result_dict = {}  # 循环外初始化空字典,用于存储所有条目

for person in data['person']:
    name = person['name']
    # 向空字典中添加键值对,而非重新创建字典
    result_dict[name] = {
        "Age": person.get('age', 25),  # 可根据实际数据取age,无数据则用默认值25
        "Gender": person.get('gender', 'Female')  # 同理,默认值设为Female
    }

# 一次性序列化整个完整字典
json_output = json.dumps(result_dict, indent=4)
# 输出或写入文件
print(json_output)
# with open('output.json', 'w') as f:
#     f.write(json_output)

关键说明

  1. 初始化位置要正确:必须在循环外部创建空字典,这样循环过程中是不断往同一个字典里追加内容,而非每次覆盖。
  2. 添加键值对的方式:用result_dict[name] = {...}的语法,将每个人员的名称作为顶级键,对应的Age和Gender作为值存入字典。
  3. 单次序列化:循环结束后,只需要调用一次json.dumps(),将整个完整的字典转换为JSON字符串,就能得到你期望的单JSON对象结构。

正确输出示例

{
    "Name1": {
        "Age": 30,
        "Gender": "Male"
    },
    "Name2": {
        "Age": 25,
        "Gender": "Female"
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 01:45:30