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
相关产品推荐
相关产品推荐

