2016-08-17 6 views
-1

У меня есть один список и один словарь. Я хочу сравнить значения списка с ключами словаря. Если у меня есть:Сравнение списка со словарем для создания нового списка в python

mydict = {'Hello':1,'Hi':2,'Hey':3} 

и:

mylist = ['Hey','What\'s up','Hello'] 

Я хочу выход быть:

output = [3, None, 1] 

Спасибо!

Я пробовал [mydict[i] for i in mylist], и вместо этого у меня есть ошибка. Затем я попытался использовать вложенные для циклов (я удалил этот бит), но я решил, что это было неэффективно.

+1

Что вы пробовали? На этом сайте вам нужно показать нам свой код и сказать, почему ваш код не работает достаточно хорошо для ваших нужд. –

+1

Я попробовал '[mydict [i] для i в mylist]', и я получил ошибку вместо 'None'. Затем я попытался использовать вложенные для циклов (я удалил этот бит), но я решил, что это было неэффективно. –

ответ

3

Используйте list comprehension:

output = [ mydict.get(key) for key in mylist ] 

Обратите внимание, что dict.get возвращает None если ключ не в Словаре.

2

Использование dict.get(), который по умолчанию None если ключ не существует:

[mydict.get(k) for k in mylist] 

>>> mydict = {'Hello':1,'Hi':2,'Hey':3} 
>>> mylist = ['Hey','What\'s up','Hello'] 
>>> out = [mydict.get(k) for k in mylist] 
>>> out 
[3, None, 1] 
Смежные вопросы