将字符串的字符与字典的键匹配,如果匹配则将字符串转换为键的值

Matching characters of a string with keys of a dictionary and converting strings to values of keys if matched

我有一本 my_dict={'A':1, 'B':1,'C':1,'D':2,'E':2,'F':2,'G':3,'H':3,'I':3} 的字典 我想编写一个输入字符串的函数,如果长度为 5,则使用字典的键检查字符串的字符,如果匹配,则打印这些键的值,否则应该 return false。例如,如果我输入一个字符串“ABIFA”,它应该产生 11321。下面是我的代码,但它没有产生我期望的结果:

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:
        
        result = [val for key, val in my_dict.items() if mystring in key]
    
        print(str(result))
    
    else:
        return False
    
    
string_to_number("ABIFA") # should produce 11321

string_to_number("ABIFAA") # should return False

你能告诉我哪里错了吗?

您可以将每个 key/value 结果映射到 str,然后使用生成器表达式

join
def string_to_number(mystring):
    if len(mystring) == 5:
        return ''.join(str(my_dict[i]) for i in mystring)
    else:
        return False