Сопоставление символов строки с ключами словаря и преобразование строк в значения ключей, если они совпадают

#python #list #dictionary #list-comprehension

Вопрос:

У меня есть словарь my_dict={'A':1, 'B':1,'C':1,'D':2,'E':2,'F':2,'G':3,'H':3,'I':3} , в котором я хотел бы написать функцию, которая вводит строку, и если длина равна 5, проверяет символы строки с помощью ключей словаря и, если они совпадают, выводит значения этих ключей, иначе должно быть возвращено значение 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  

Не могли бы вы сказать мне, где я допустил ошибку, пожалуйста?

Ответ №1:

Вы можете сопоставить каждый результат ключа/значения с a str , а затем join использовать выражение генератора

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