#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