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

Python中如何匹配字典值与列表元素获取对应键,解决索引报错

问题原因分析

你代码触发列表索引越界的核心原因是计数器c的初始化位置错误:

  • 你把c=0定义在了外层遍历字符的循环之外,第一次遍历完字典所有值后c就会自增到3
  • 你的keys列表只有3个元素,合法索引范围是0~2,第二次进入外层循环时访问keys[3]直接触发越界
修复方案

方案1:最小改动原代码

只需把计数器c的初始化放到外层字符循环内部,每次处理新字符前重置计数即可:

def split(word):
    return [char for char in word]

word = '26kk15'

d={'3':['1','2'],'4':['5','6'],'s':['k','l']}
keys=list(d.keys())
nl=split(word)
for k in range(0,len(nl)):
    c = 0 # 每次处理新字符前重置计数器
    for iu in d.values():
        for j in iu:
            if j == nl[k]:
                print(keys[c])
        c += 1

运行后会逐行输出你期望的3、4、s、s、3、4。

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

提前构建字符到对应键的映射表,避免多层循环嵌套,逻辑更清晰也更易维护:

word = '26kk15'
d = {'3':['1','2'],'4':['5','6'],'s':['k','l']}

# 预构建字符-键映射表,后续直接查表即可
char_key_map = {}
for key, char_list in d.items():
    for char in char_list:
        char_key_map[char] = key

# 遍历单词字符直接输出对应键
for char in word:
    print(char_key_map[char])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 10:48:03