如何将列表中的字符替换为字典对应字符列表的键?
问题描述
现有字典:
char_code = {'1':['b','f','v','p'],'2':['c','g','j','k','q','s','x','z'], '3':['d','t'], '4':['l'],'5':['m','n'], '6':['r']}
字符列表:
word_list = ['r', 'v', 'p', 'c']
需要将word_list中的每个字符替换为字典中对应列表的键,最终得到['6', '1', '1', '2']。
尝试了以下代码但未成功:
word_list[:]=[char_code.get(e,'') for e in word_list]
解决方法
你原来的代码行不通,是因为char_code的键是'1'、'2'这类字符串,而你用字符(比如'r')去调用get(),自然找不到对应值。正确的做法是先反转字典,把每个字符映射到对应的键,这样就能直接通过字符查键了。
步骤1:构建反转后的映射字典
遍历原字典的键值对,把每个字符和对应的键关联起来:
reverse_char_code = {} for key, chars in char_code.items(): for char in chars: reverse_char_code[char] = key
执行后,reverse_char_code会变成字符到对应键的直接映射,比如{'b':'1', 'v':'1', 'r':'6'}这类结构。
步骤2:转换字符列表
用列表推导式遍历word_list,通过反转后的字典直接取值:
word_list[:] = [reverse_char_code[e] for e in word_list]
执行后,word_list就会变成目标结果['6', '1', '1', '2']。
完整代码
char_code = {'1':['b','f','v','p'],'2':['c','g','j','k','q','s','x','z'], '3':['d','t'], '4':['l'],'5':['m','n'], '6':['r']} word_list = ['r', 'v', 'p', 'c'] # 构建反转映射 reverse_char_code = {} for key, chars in char_code.items(): for char in chars: reverse_char_code[char] = key # 替换字符 word_list[:] = [reverse_char_code[e] for e in word_list] print(word_list) # 输出: ['6', '1', '1', '2']
内容的提问来源于stack exchange,提问作者imhans4305
相关产品推荐
相关产品推荐

