Ваша задача будет легче, если вы перевернете ключи и значения в вашем словаре.Я предполагаю, что нет повторяющихся значений.
dict2 = {1: "A", 2: "B", 3: "C"}
lookup = {value: key for key, value in dict2.items()}
Теперь lookup
равно {'A': 1, 'B': 2, 'C': 3}
.Теперь вы можете перебрать список:
listy = ['A', 'M', 'B', 'A']
result = []
for key in listy:
if key in lookup:
result.append(key)
Теперь result
равно ['A', 'B', 'A']
.Код будет короче с пониманием списка:
result = [key for key in listy if key in lookup]
Насколько я понял вопрос, вы хотите получить сумму ключей в dict2
для каждой записи в listy
, которая имеет соответствующийзначение в dict2
.Если вы создали словарь lookup
, вы можете выполнить следующие действия, чтобы получить отдельные значения:
[lookup.get(key, 0) for key in listy]
# -> [1, 0, 2, 1]
Если ключ отсутствует в словаре, он получает значение по умолчанию 0
.
Получить сумму сейчас легко
sum(lookup.get(key, 0) for key in listy)
# -> 4