как собрать вывод в один словарь?

letters = {'а': 1, 'б': 2, 'в': 3, 'г': 4, 'д': 5, 'е': 6, 'ё': 7, 'ж': 8, 'з': 9,
       'и': 1, 'й': 2, 'к': 3, 'л': 4, 'м': 5, 'н': 6, 'о': 7, 'п': 8, 'р': 9,
       'с': 1, 'т': 2, 'у': 3, 'ф': 4, 'х': 5, 'ц': 6, 'ч': 7, 'ш': 8, 'щ': 9,
       'ъ': 1, 'ы': 2, 'ь': 3, 'э': 4, 'ю': 5, 'я': 6}

name = str.casefold(input("Введите запрос:")) # например Пётр
for i, letter in enumerate(name):
    if letter in letters.keys():
        new_letter = list()
        new_letter.append(letters[letter])
        print(new_letter, end='')

Ответы (2 шт):

Автор решения: entithat

Проходимся по каждой букве в словаре str и проверяем есть ли она в словаре letters и берем значение по ключу.

letters = {'а': 1, 'б': 2, 'в': 3, 'г': 4, 'д': 5, 'е': 6, 'ё': 7, 'ж': 8, 'з': 9,
           'и': 1, 'й': 2, 'к': 3, 'л': 4, 'м': 5, 'н': 6, 'о': 7, 'п': 8, 'р': 9,
           'с': 1, 'т': 2, 'у': 3, 'ф': 4, 'х': 5, 'ц': 6, 'ч': 7, 'ш': 8, 'щ': 9,
           'ъ': 1, 'ы': 2, 'ь': 3, 'э': 4, 'ю': 5, 'я': 6}

str = input()  # "Пётр"
print(list(map(lambda x: letters[x.casefold()], str)))  # [8, 7, 2, 9]
→ Ссылка
Автор решения: TigerTV.ru

Можно так решить:

alphabet = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя"
letters = {c: i % 9 + 1 for i,c in enumerate(alphabet)}
s = input("Введите запрос: ").casefold() # Пётр
res = [letters[c] for c in s]
print(res) # [8, 7, 2, 9]
→ Ссылка