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

Python如何从控制台返回的JSON数据中提取指定值并解决KeyError报错

问题原因

你触发KeyError: 'attributes'的核心原因是返回结构中的data字段为列表类型,你直接对列表对象取['attributes']键,自然找不到对应字段。
从你给出的返回结构可以看到,data字段被方括号包裹,列表内的第一个元素才是包含attributes的用户数据字典:

{
    'object': 'list',
    # data是列表,不是字典
    'data': [
        {'object': 'user', 'attributes': {'id': 1, '其他字段': '...'}}
    ],
    'meta': {'pagination': '...'}
}
正确取值代码

情况1:list_users为同步方法

async def gouser(ctx):
    tes = clientp.user.list_users("test@gmail.com")
    # 先取data列表的第1个元素(下标为0),再取attributes下的id
    user_id = tes['data'][0]['attributes']['id']
    print(user_id)

情况2:list_users为异步方法

如果调用后拿到的是协程对象而非实际数据,需要加await关键字获取返回结果:

async def gouser(ctx):
    tes = await clientp.user.list_users("test@gmail.com")
    user_id = tes['data'][0]['attributes']['id']
    print(user_id)
健壮性优化

如果存在查询结果为空的场景,可以增加判空逻辑避免下标越界报错:

async def gouser(ctx):
    tes = await clientp.user.list_users("test@gmail.com")
    data_list = tes.get('data', [])
    if data_list:
        user_id = data_list[0]['attributes']['id']
        print(user_id)
    else:
        print("未匹配到对应用户数据")

注意:不要使用id作为变量名,id是Python内置函数,自定义变量会覆盖原有功能,建议替换为user_id这类命名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 21:24:03