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

使用casefold匹配字典键触发KeyError,求忽略大小写的正确实现

问题原因

你的代码触发KeyError是因为原字典的键没有统一转换成大小写无关的形式:当处理'ab'时,item.casefold()得到'ab',但原字典test_dict里并没有'ab'这个键——对应的值'aB'的键是'Ab',它的casefold()结果才是'ab',直接用转换后的字符串去原字典查找自然找不到。

正确实现方法

方法一:构建大小写无关的映射字典(推荐,查找效率高)

先把原字典的键统一转换成casefold()后的形式,生成新的映射字典,之后直接用转换后的输入值去查找即可:

test_vals = ['ad', 'ab', 'rD']
test_dict = {'ad': 'Ad', 'Ab': 'aB', 'RD': 'RD'}

# 生成键为casefold后的新字典
case_insensitive_dict = {k.casefold(): v for k, v in test_dict.items()}

for item in test_vals:
    print(case_insensitive_dict[item.casefold()])

运行后会输出:

Ad
aB
RD

方法二:遍历原字典匹配(适合小字典)

如果不想创建新字典,可以遍历原字典的键,逐个比较casefold()后的结果:

test_vals = ['ad', 'ab', 'rD']
test_dict = {'ad': 'Ad', 'Ab': 'aB', 'RD': 'RD'}

for item in test_vals:
    target_key = item.casefold()
    # 遍历原字典找匹配的键
    for k, v in test_dict.items():
        if k.casefold() == target_key:
            print(v)
            break
    # 可选:处理找不到匹配的情况
    # else:
    #     print(f"未找到{item}对应的匹配项")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 12:47:09