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

Python提取嵌套JSON中episodes下的scene_id时报KeyError的解决

代码问题排查与scene_id提取实现

原代码触发KeyError的核心原因

  • 遍历范围错误:json.load(f)返回的是根字典,直接执行for i in data遍历,仅能拿到根字典的键(即字符串"episodes"),完全没有进入episodes对应的数组层级。
  • 字段访问层级错误:根字典仅包含episodes一个顶级键,不存在scene_id字段,直接执行data['scene_id']必然抛出KeyError。
  • 循环逻辑无效:循环体中始终访问外层根字典对象,没有用到循环变量的值,即使调整遍历范围也无法获取数组内部的字段。
  • 文件操作不严谨:手动调用open/close的方式没有异常适配,读取过程中如果触发报错,会导致文件句柄无法正常释放。

正确实现逻辑

按照给定的JSON结构,需要先定位到episodes对应的数组,再遍历数组内的每个episode对象提取scene_id,可运行代码如下:

import json

# 用上下文管理器处理文件读取,自动完成资源回收
with open('val.json', 'r', encoding='utf-8') as f:
    json_root = json.load(f)

all_scene_ids = []
# 遍历episodes数组中的每个元素
for episode in json_root['episodes']:
    current_scene_id = episode['scene_id']
    all_scene_ids.append(current_scene_id)
    print(current_scene_id)

精简写法可通过列表推导式一次性完成字段提取:

all_scene_ids = [ep['scene_id'] for ep in json.load(open('val.json', encoding='utf-8'))['episodes']]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.23 08:36:05