Python字符串字符匹配字典键转对应值的代码错误如何解决?
现有代码存在的问题
- 核心匹配逻辑完全错误:你写的判断条件是
mystring in key,也就是用整个长度为5的输入字符串去匹配字典里的单字符键,不可能得到匹配结果,最终得到的result必然是空列表 - 顺序不对应:你是遍历字典的键值对来筛选结果,而不是按输入字符串的字符顺序逐个查询字典,即使匹配到了也无法和输入字符的顺序保持一致
- 输出格式错误:你直接将列表转为字符串输出,得到的会是
[]包裹的列表格式,而非连续拼接的数字串 - 返回值不符合要求:长度符合5的分支你只执行了
print操作,没有返回对应结果,函数调用后拿到的返回值是None
修正后的实现
my_dict={'A':1, 'B':1,'C':1,'D':2,'E':2,'F':2,'G':3,'H':3,'I':3} def string_to_number(mystring): if len(mystring) != 5: return False # 按顺序遍历输入字符串的每个字符,查询字典后转字符串拼接 result = ''.join(str(my_dict[char]) for char in mystring) return result # 测试调用 print(string_to_number("ABIFA")) # 输出 11321 print(string_to_number("ABIFAA")) # 输出 False
如果需要兼容输入字符不在字典键中的场景,可以将查询逻辑改为str(my_dict.get(char, '')),不存在的字符会被替换为空字符串,避免抛出KeyError。
内容的提问来源于stack exchange,提问作者user_01
相关产品推荐
相关产品推荐

