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

Python遍历无列表结构的JSON字典报错及实现需求

问题解决:遍历JSON字典中的子字典块

你遇到的错误原因很直接:直接遍历Python字典时,默认只会拿到字典的键(也就是"univ1"、"univ2"这类字符串),而不是键对应的字典值。所以item是字符串类型,自然没有rsample属性。

要遍历每个univ对应的字典块,有两种常用方式:

方式1:只遍历子字典值

如果不需要用到univ1、univ2这些键名,直接用values()方法获取所有子字典:

import json

f = '''
{
  "configurator": {
    "term": "enabled"
  },
  "monitor": {
    "nortel": "thread"
  },
  "micros": {
    "code": "1200"
  },
  "universities": {
    "univ1": {
      "code": "TTSG",
      "rsample": {
        "meta_data": "TGED",
        "samcode": ""
      },
      "tables": {
        "count": "1"
      },
      "storage": {
        "wooden": [],
        "metal": [],
        "plastic": []
      }
    },
    "univ2": {
      "code": "TTSS",
      "rsample": {
        "meta_data": "TGES",
        "samcode": ""
      },
      "tables": {
        "count": "2"
      },
      "storage": {
        "wooden": [],
        "metal": [],
        "plastic": []
      }
    }
  }
}
'''
data = json.loads(f)
data_topology = data['universities']

# 遍历所有子字典值
for item in data_topology.values():
    print(item["rsample"])  # 字典用键索引访问,而非点语法

方式2:同时获取键名和子字典

如果需要用到univ1这类标识名称,用items()方法同时拿到键和值:

for univ_key, univ_data in data_topology.items():
    print(f"当前处理:{univ_key}")
    print(univ_data["rsample"]["meta_data"])  # 可以继续嵌套访问内部字段
    # 在这里添加对任意数量univ的操作逻辑

注意:JSON解析得到的是普通Python字典,访问内部字段必须用键索引语法[],不能用点.(点语法是类实例的属性访问方式,不适用于普通字典)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 22:55:24