如何快速将单字母映射字典应用于多字母字符串?
解决单字母映射字典处理多字母字符串的问题
你的问题很典型——原来的函数只处理单个字符,面对多字符字符串就失效了对吧?其实不用手动逐个索引遍历,利用Python的迭代特性就能轻松搞定。
核心思路是:字符串本身是可迭代对象,我们可以直接遍历输入字符串的每一个字符,把每个字符对应的字典值取出来拼接成结果就行。
修改后的代码如下:
def decode(code): key = {"a":1,"b":2,"c":3,"d":4,"e":5} # 遍历每个字符,转成对应字符串后拼接,最后转成整数 return int(''.join(str(key[char]) for char in code))
调用decode("eddcab")就会返回544312,完全符合你的需求。
简单拆解一下这个写法:
for char in code:自动遍历输入字符串的每一个字符,不用你手动写code[0]、code[1]这种索引操作str(key[char]):把字典里对应的数值转成字符串类型,这样才能用join拼接''.join(...):把所有单个的数字字符串拼接成一个完整的字符串,最后转成int得到你要的数字结果
额外提个小优化:如果担心输入字符串里有不在字典中的字符(会触发KeyError),可以用dict.get()方法设置默认值,比如遇到未知字符就用0代替:
def decode(code): key = {"a":1,"b":2,"c":3,"d":4,"e":5} return int(''.join(str(key.get(char, 0)) for char in code))
这样函数的鲁棒性会更好,不会因为输入里有意外字符直接报错。
内容的提问来源于stack exchange,提问作者Fred
相关产品推荐
相关产品推荐

