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

Python解析JSON报TypeError:list indices must be integers or slices错误解决

错误产生原因

触发TypeError: list indices must be integers or slices, not str的直接原因是:你的取值路径中某一层返回的数据类型是列表(list),而非你预期的字典(dict)。字符串类型的key只能用来索引字典,索引列表必须使用整数下标或切片,直接传字符串key就会抛出该错误。
你写的长链式取值默认路径上每一级都是字典结构,但实际接口返回的JSON结构里,challengeMethods/challenges/requiredMethods/versions这类字段通常是数组结构,哪怕数组仅包含1个元素,也需要先通过下标取出对应元素,才能继续用key取内部字段。

快速定位问题层级

逐层打印每一步取值的返回类型,就能精准找到哪一层是列表,排查代码如下:

result2 = response2.json()
# 从最外层开始逐段执行,每一步打印类型
current = result2
print("根节点类型:", type(current))
current = current['challengeMethods']
print("challengeMethods层类型:", type(current))
current = current['challenges'] # 如果上一层是list,这里就会先报错,对应调整即可
print("challenges层类型:", type(current))
# 按照这个逻辑依次往下检查requiredMethods、versions层即可
正确取值方案

固定下标快速取值(确认目标值在列表第一个元素时用)

如果排查确认目标值所在的列表元素固定在第一位,直接在列表层加[0]索引即可:

result2 = response2.json()
# 以下为该类接口常见结构的取值写法,可根据你实际排查到的列表位置调整[0]的位置
reference_id_approve = result2['challengeMethods'][0]['challenges'][0]['requiredMethods'][0]['versions'][0]['referenceId']

遍历匹配稳妥取值(不确定元素位置时用)

如果列表内元素顺序不固定,建议逐层遍历匹配目标值,避免下标错误导致取错值或抛错:

reference_id_approve = None
target_ref = "14fee7f5-2f81-448c-a0ca-41558eb68b8f:P6JQ"

for cm in result2.get('challengeMethods', []):
    challenges = cm.get('challenges', []) if isinstance(cm, dict) else []
    for ch in challenges:
        req_methods = ch.get('requiredMethods', []) if isinstance(ch, dict) else []
        for rm in req_methods:
            versions = rm.get('versions', []) if isinstance(rm, dict) else []
            for ver in versions:
                if isinstance(ver, dict) and ver.get('referenceId') == target_ref:
                    reference_id_approve = ver['referenceId']
                    break
            if reference_id_approve:
                break
        if reference_id_approve:
            break
    if reference_id_approve:
        break

提示:写接口取值逻辑时尽量用dict.get()方法代替直接[]索引,可以避免字段缺失时直接抛出KeyError。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 00:27:19