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

Python循环前添加检查规避IndexError: list index out of range错误

解决Python循环中的IndexError问题

问题场景

执行以下循环代码时:

for fact_entry in range(len(facts['items'][0]['facts'])):
    [...]

当facts为以下空内容结构时:

{'items': [], 'totalCount': 0, 'partialResults': False, 'metadata': {'processingTime': 2}}

会触发IndexError: list index out of range,原因是facts['items']是空列表,无法通过[0]索引获取元素。

解决方案

在进入循环前添加检查,确保访问路径的有效性,以下是几种可行方式:

基础检查(适配当前报错场景)

先判断facts['items']是否非空,为空则直接跳过循环:

if facts['items']:
    for fact_entry in range(len(facts['items'][0]['facts'])):
        [...]

注:空列表在布尔判断中会被视为False,因此该判断可以直接筛选出有元素的情况。

严谨多层检查(避免其他潜在报错)

如果需要防范items不存在、或第一个元素没有facts键的情况,可以扩展检查逻辑:

# 依次检查items存在且非空、第一个元素包含facts键
if 'items' in facts and facts['items'] and 'facts' in facts['items'][0]:
    for fact_entry in range(len(facts['items'][0]['facts'])):
        [...]

或者使用get方法提升容错性:

items = facts.get('items', [])
if items and 'facts' in items[0]:
    for fact_entry in range(len(items[0]['facts'])):
        [...]

更Pythonic的遍历写法

如果不需要使用fact_entry这个索引值,直接遍历facts中的目标元素会更简洁:

if facts['items']:
    for fact in facts['items'][0]['facts']:
        # 直接操作fact,替代通过索引访问
        [...]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 23:47:03