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
相关产品推荐
相关产品推荐

