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

如何在一级键动态变化的嵌套JSON字典中访问子字典?

解决动态一级键的JSON数据访问问题

问题描述

我收到如下JSON响应:

{'3830': {'success': True, 'data': {'categories': [{'id': 2, 'description': 'Single-player'}, {...}]}}}

想要访问其中的子字典categories,但一级字典的键(如上例中的3830)是动态变化的。该JSON响应是requests.get遍历列表得到的结果,每次响应的一级键都会改变。无法在函数中设置变量来存储categories的内容。

尝试过的代码:

data = await response.json()
mp_data = data['3830']['data']['categories']

第一次迭代因键匹配成功,但后续迭代触发KeyError。还尝试用['*']和[*]作为一级键的变量,均无效。


可行解决办法

方法1:直接获取第一个键对应的值(最常用)

如果每次响应的一级字典只有一个动态键,直接取第一个值即可,无需关心键名:

data = await response.json()
# 取字典的第一个值
top_level_content = next(iter(data.values()))
mp_data = top_level_content['data']['categories']

iter(data.values())生成字典值的迭代器,next()快速获取第一个元素,不管键是什么都能拿到目标上级内容。

方法2:遍历所有一级键(适配多键场景)

如果一级字典可能存在多个动态键,需要逐个处理每个键对应的categories:

data = await response.json()
for key in data:
    mp_data = data[key]['data']['categories']
    # 在这里处理mp_data,比如存入列表或直接使用

方法3:用popitem()取键值对(不推荐,会修改原字典)

如果只需要一次性获取唯一的键值对,可使用popitem(),但该方法会删除原字典中的对应键值对,仅适合临时使用:

data = await response.json()
_, top_level_content = data.popitem()
mp_data = top_level_content['data']['categories']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 08:47:13