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

Python中字典get()方法遇‘list index out of range’的解决方法

解决JSON数据取值的索引越界问题

错误原因分析

  1. 默认值类型不匹配:你给list设置的默认值是{}(字典),但实际接口返回的list是数组类型。就算把默认值改成数组,如果数组为空,直接用[0]索引也会触发「list index out of range」错误。
  2. 字段名错误:你要获取的是bidPrice,但代码里写的是lastPrice,就算索引没问题,也取不到正确值。

安全取值方案

核心思路是:先判断数组是否非空,再去取第一个元素,全程用get()避免KeyError,同时保证默认值类型匹配。

方案一:分步判断(可读性优先)

# 假设接口返回数据存在变量json_data中
result = json_data.get('result', {})
item_list = result.get('list', [])
# 先判断列表是否有内容,再取值
bid_price = item_list[0].get('bidPrice') if item_list else None

方案二:链式调用(简洁优先)

bid_price = json_data.get('result', {}).get('list', [])[0].get('bidPrice') if json_data.get('result', {}).get('list', []) else None

方案三:使用Walrus运算符(Python 3.8+,逻辑紧凑)

# 用海象运算符存中间变量,避免重复调用get
if item_list := json_data.get('result', {}).get('list', []):
    bid_price = item_list[0].get('bidPrice')
else:
    bid_price = None

方案四:封装成工具函数(复用优先)

如果需要多次获取这类字段,可以封装成函数:

def extract_bid_price(json_data):
    result = json_data.get('result', {})
    item_list = result.get('list', [])
    return item_list[0].get('bidPrice') if item_list else None

# 使用示例
bid_price = extract_bid_price(json_data)

关键注意事项

  • 始终保证默认值类型匹配:数组类型的字段默认值设为[],字典类型设为{},避免类型不匹配引发后续错误。
  • 严格核对字段名:比如接口返回的是bidPrice,就不要写成lastPrice,否则get()会返回None。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 01:45:31