2016-09-04 2 views
-6

Мой словарьЗаменить элемент списка с соответствующим значением словаря

{'apple': '2', 'banana': '3', 'pear': '1', 'peach': '1'} 

И мой список

['banana', 'apple', 'pear', 'apple banana'] 

Как бы я сделать новый список, заменяющий список значений с словарных значений? Это новый список.

['3', '2', '1', '5'] 

И как бы я добавить все значения, чтобы получить новый список с номерами добавленных внутри как этот

['11'] 

Я пробовал:

result = map(dictionary.get, l) 
print(list(result)) 

Но это дает неправильный ответ: ['3', '2', '1', None]

+0

вы цикл по каждому значению в списке, а затем Lookup это значение в словаре, чтобы получить новое значение ... –

+0

Могли бы вы, возможно, вставить код в? Я спрашиваю, как это сделать по какой-то причине ... Причина в том, что я не знаю, как это сделать. –

+3

Вы сами делали какие-либо попытки? – Karin

ответ

0

Давайте определим ваши переменные:

>>> d = {'apple': '2', 'banana': '3', 'pear': '1', 'peach': '1'} 
>>> x = ['banana', 'apple', 'pear', 'apple banana'] 

Теперь давайте вычислим результаты:

>>> [sum(int(d[k]) for k in y.split()) for y in x] 
[3, 2, 1, 5] 
>>> sum(sum(int(d[k]) for k in y.split()) for y in x) 
11 

Или, если первый список выше действительно необходимо, чтобы струны для его элементов и суммы выше, также необходимо, чтобы быть строка и в списке:

>>> [str(sum(int(d[k]) for k in y.split())) for y in x] 
['3', '2', '1', '5'] 
>>> [str(sum(sum(int(d[k]) for k in y.split()) for y in x))] 
['11'] 
+0

Это помогло много. Спасибо, я не знаю, почему люди сбрасывают вас –

Смежные вопросы