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

Python遍历JSON嵌套列表报错TypeError及正确遍历方法

解决方案

先明确你的JSON结构

从你能用print(data['summary'][0][1])取值来看,你的数据是嵌套列表结构,不是常规的键值对字典,大概长这样:

data = {
    "summary": [
        # 第一个是描述性条目
        ["字段1说明", "字段2说明"],
        # 后面是人员数据
        ["Alice", "Team A"],
        ["Bob", "Team B"],
        ["Charlie", "Team C"]
    ]
}

报错原因

你碰到的TypeError,大概率是循环时犯了这两个常见错误:

  • 把列表元素当成字典,用item['Name']这种键取值的方式(但item是列表,不是字典)
  • 循环时把列表本身当成索引用,比如data['summary'][i][0]里的i是列表,不是整数

正确的遍历写法

方法1:直接跳过第一个条目,遍历后续元素

用切片[1:]跳过第一个描述性条目,然后逐个取子列表里的元素:

# 从索引1开始,遍历所有人员数据
for person in data['summary'][1:]:
    name = person[0]  # 假设Name在每个子列表的第0位
    team = person[1]  # 假设Team在每个子列表的第1位
    print(f"Name: {name}, Team: {team}")

方法2:用索引循环(适合需要知道位置的场景)

如果需要用到索引,就从1开始循环到列表末尾:

# 从索引1开始,遍历到最后一个元素的索引
for i in range(1, len(data['summary'])):
    person = data['summary'][i]
    name = person[0]
    team = person[1]
    print(f"Name: {name}, Team: {team}")

进阶写法:适配字段顺序变化

如果第一个条目是字段名(比如["Name", "Team"]),可以先拿到字段对应的索引,这样就算字段顺序变了也能正确取值:

# 先获取字段名列表
field_names = data['summary'][0]
# 拿到Name和Team对应的索引
name_index = field_names.index("Name")
team_index = field_names.index("Team")

# 遍历后续人员数据
for person in data['summary'][1:]:
    name = person[name_index]
    team = person[team_index]
    print(f"Name: {name}, Team: {team}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 13:13:13