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

如何遍历Python字典并按指定格式写入JSON文件?

问题分析与解决

核心问题

你只创建了一个字典对象,循环时不断修改它的name和追加技能,最后自然只剩最后一个用户(Ben)的数据,而且所有技能都堆在这个字典里了。另外代码还有几个语法和逻辑错误:

  • 内层循环用skills当变量名,覆盖了外层的skills变量,逻辑会混乱
  • for tag in tag是无效循环,应该遍历每个技能对应的等级列表
  • 你想要的输出格式不符合JSON规范,同一个JSON对象不能有重复的name键,正确结构应该是用户对象组成的数组

修正后的代码

import json

persons = {'Tom': {'reading': ['excellent'], 'writing': ['B1', 'B2']}, 'Ben': {'reading': ['excellent'], 'writing': ['B2']}}
# 用列表存储所有用户数据,避免覆盖
result = []

for name, user_skills in persons.items():
    # 每次循环创建新的用户字典,确保每个用户数据独立
    user_dict = {'name': name, 'skills': []}
    for skill_name, levels in user_skills.items():
        # 遍历当前技能下的所有等级
        for level in levels:
            skill_str = f'{skill_name}#{level}'
            user_dict['skills'].append(skill_str)
    result.append(user_dict)

# 写入JSON文件
with open('vms1.json', 'w') as jfile:
    json.dump(result, jfile, indent=2)

最终生成的JSON内容

[
  {
    "name": "Tom",
    "skills": [
      "reading#excellent",
      "writing#B1",
      "writing#B2"
    ]
  },
  {
    "name": "Ben",
    "skills": [
      "reading#excellent",
      "writing#B2"
    ]
  }
]

这个结构既符合JSON规范,又实现了每个用户对应自身技能的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 01:00:59