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

如何从列表中获取字典,解决list indices must be integers or slices报错

问题修复方案

报错根因

TypeError: list indices must be integers or slices, not str 报错的核心原因是代码误将列表类型的节点当做字典,用字符串键访问了列表。你的代码中res['departure']默认把res当成字典处理,但实际API返回的res本身是列表,列表内的每个元素才是包含departure字段的航班字典对象。

备注:res通过res = await foo.json()获取,是API响应的JSON格式化结果,并非读取本地文件所得。

具体修复方法

  • 如果你只需要取第一条航班的出发机场ICAO,先通过下标取列表的第一个元素(列表下标从0开始),再逐层访问字典键即可:
embed.add_field(name=f"Departure Airport ({res[0]['departure']['airport']['icao']})")
  • 如果你需要批量处理所有航班的信息,遍历整个res列表即可:
for single_flight in res:
    departure_icao = single_flight['departure']['airport']['icao']
    # 后续可按需自定义字段值等逻辑
    embed.add_field(name=f"Departure Airport ({departure_icao})", value="自定义字段内容")

通用排错技巧

后续遇到同类层级访问报错时,可以逐层打印节点类型快速定位问题位置:

print(type(res)) # 确认最外层res的类型
print(type(res[0])) # 确认列表第一个元素的类型
print(type(res[0]['departure'])) # 确认departure节点的类型

如果打印后发现其他层级是列表,同样用下标先取对应元素再访问后续键即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 04:42:02