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

Python KeyError问题:遍历列表生成JSON时无法解析字段

解决KeyError并优化SKU遍历解析的方法

嘿,这个KeyError问题很好解决,我来给你拆解下:

错误原因

你定义的payload是个空字典,当第一次循环i=0时,payload[i]也就是payload[0]还不存在——字典没办法直接给一个不存在的键设置属性(或键值对),所以就抛出了KeyError: 0。

最优遍历解析方案

考虑到你是按顺序生成SKU条目,用列表来存储payload会更合适——列表天然支持按顺序索引访问,而且后续转JSON也非常方便。这里给你两种优化后的写法:

写法1:修复原while循环逻辑

index = 38
payload = []  # 把字典改成列表,更适配顺序存储场景
i = 0
while i < Number_SKUs:
    SKU_size = 2
    # 提取当前SKU片段
    sku_segment = Mbody[index:(index + SKU_size*2)]
    # 将SKU信息封装成字典,添加到列表中
    payload.append({"sku": sku_segment})
    print(sku_segment)
    # 更新索引和循环变量
    index += SKU_size * 2
    i += 1

写法2:更Pythonic的for循环

用for循环替代while,代码更简洁易读,还不用手动维护循环变量i:

index = 38
SKU_size = 2
payload = []
# 直接循环指定次数
for _ in range(Number_SKUs):
    sku_segment = Mbody[index:index + SKU_size * 2]
    payload.append({"sku": sku_segment})
    print(sku_segment)
    index += SKU_size * 2

如果你坚持要用字典存储

那每次循环时需要先给payload[i]初始化一个空字典,再进行赋值:

index = 38
payload = {}
i = 0
while i < Number_SKUs:
    SKU_size = 2
    payload[i] = {}  # 先创建当前索引对应的空字典
    payload[i]["sku"] = Mbody[index:(index + SKU_size*2)]
    index += SKU_size * 2
    print(payload[i]["sku"])
    i += 1

后续转JSON的步骤

不管用列表还是字典,后续都可以直接用json模块转成格式化的JSON字符串:

import json
json_result = json.dumps(payload, indent=4)  # indent参数让JSON格式更美观易读
print(json_result)

额外提醒

记得确保Number_SKUs的数值是合理的,避免index + SKU_size*2超出Mbody的长度,不然会触发索引越界错误哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:30:11