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

遍历列表使用迭代索引为字典新增key时出现List index out of range错误

报错原因

触发IndexError的核心是遍历循环的次数设置错误:

  • 你当前使用的循环语句for z in range(0,len(rawskudata)),会按照rawskudata的总元素个数执行循环。但你的逻辑是每轮循环需要消耗4个元素,实际循环次数仅需要为总元素数/4即可。
  • 以你提供的rawskudata输出为例,总长度为20,共5组数据,仅需要循环5次即可处理完成。但原代码会循环20次,第6次循环时访问的索引就已经超过了列表的最大下标,直接触发报错。
  • 冗余细节:代码中int(c_sku)这类转换没有必要,c_sku本身就是整数类型,可直接使用。

解决方法

方案1:最小改动修复原代码

仅修改循环的终止条件,将循环次数改为总组数即可:

# 原循环删除,替换为下面的代码
for z in range(len(rawskudata) // 4):
  c_list = "componant" + str(c_tag)
  skuandimages[c_list] = [rawskudata[c_sku], rawskudata[c_img_url], rawskudata[c_name], rawskudata[c_quantity]]
  c_sku = c_quantity + 1
  c_img_url = c_quantity + 2
  c_name = c_quantity + 3
  c_quantity = c_quantity + 4
  c_tag += 1

方案2:更简洁的优化写法

不需要手动维护4个索引变量,直接按步长4遍历列表即可,代码更简洁不易出错:

skuandimages = {}
for idx, start in enumerate(range(0, len(rawskudata), 4)):
    skuandimages[f"componant{idx}"] = rawskudata[start:start+4]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 12:06:04