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

带字符范围判断的For-loop/if-statement报KeyError:0求助

问题分析与解决

错误原因

KeyError: 0 不是因为merge_image1是字典,而是你循环遍历的元素i不是字符串,而是字典(或其他映射类型)。当你执行i[0:36]时,Python会把0当作字典的键去查找,而该键不存在,所以抛出KeyError。

大概率是你构建merge_image1时出了问题,比如误将字典或其他非字符串数据塞进了列表里,导致遍历到的元素不是预期的图片路径字符串。

排查与修复步骤

  1. 确认merge_image1的元素类型
    在循环前添加一行代码,打印所有元素的类型:

    print([type(item) for item in merge_image1])
    

    如果输出里有<class 'dict'>,说明列表混进了字典元素,需要回溯merge_image1的生成逻辑,确保每个元素都是图片路径字符串。

  2. 修正代码里的其他问题
    即使解决了KeyError,你的代码还有几个潜在问题,一并修正:

    • 路径拼写错误:Sitmuli应该是Stimuli(少了字母t)
    • 变量名不一致:第一个条件用image_valence1,第二个用image_valence,会导致数据分散或变量未定义
    • 硬编码切片长度不安全:如果字符串长度不足36或31,会引发索引错误,改用startswith()方法更稳妥

    修正后的代码示例:

    for i in merge_image1:
        # 先确保i是字符串,避免非预期类型报错
        if isinstance(i, str):
            if i.startswith('Stimuli/Faces/resized_positive_faces'):
                image_valence1.append('positive')
            elif i.startswith('Stimuli/Faces/resized_neg_faces'):
                image_valence1.append('negative')
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 09:00:51