Суммирование элементов словаря по значениям из списка

Рейтинг: 0Ответов: 2Опубликовано: 26.06.2023

Имеется задача на поиск суммы из значений словаря по значениям из введенного списка. По условию задачи - вводится слово на английском или русском языках, каждой букве соответствует цифра.

  • можно ли преобразовать значения списка под формат число = все буквенные значения;
  • при суммировании по формуле в коде ниже выходит ошибка list indices must be integers or slices, not str - как суммировать данные?

Благодарю за помощь!

a=input("Введите слово:")
nums=list(a)
d={'A': 1,'E': 1,'I': 1,'O': 1,'U': 1,'L': 1,'N': 1,'S': 1,'T': 1,'R': 1,'D': 2,'G':2,'B':3,'C':3,'M':3,'P':3,
   'F':4,'H':4,'V':4,'W':4,'Y':4,'K':5,'J':6, 'X':6,'Q':7,'Z':7,'А':1,'В':1,'Е':1,'И':1,'Н':1,'О':1,'Р':1,'С':1,'Т':1, 
   'Д':2, 'К':2, 'Л':2, 'М':2,'П':2, 'У':2, 'Б':3, 'Г':3, 'Ё':3, 'Ь':3, 'Я':3, 'Й':4, 'Ы':4, 'Ж':5, 'З':5, 'Х':5, 'Ц':5, 
   'Ч':5, 'Ш':8, 'Э':8, 'Ю':8, 'Ф':10, 'Щ':10, 'Ъ':10}
total = sum(nums[x] for x in d)
print(total)

Ответы

▲ 0Принят
  1. Зачем преобразовывать в "число = буква"?
  2. Используйте многострочную запись, если однострочный непонятен

После словаря я бы написал так:

total = 0

for char in a:
   if type(d.get(char)) is int:
      total = total + d.get(char)

print(total)
▲ 3

Такое впечатление, что у вас все с ног на голову перевернуто

total = sum(d[x] for x in a)