2015-09-03 2 views
0

я следующий код, который возвращает словарь, который был подмножество с помощью списка и понимания, так что список продуктов содержит только пары, где ключ является элементом в списке:Как обратить вспять это понимание?

import collections 

mydict = {'apple': 1, 'pear': 2, 'orange': 3} 
mylist = ['apple', 'pear', 'orange', 'banana', 'grape'] 

test1 = dict((x, mydict[x]) for x in mylist if x in mydict) 
print test1 

Это дает выход из:

{'orange': 3, 'pear': 2, 'apple': 1} 

что я теперь хочу и не могу понять, как сделать это понимание, что даст мне новый список всех элементов в mylist, которые не является ключевым в mydict. Выходной сигнал этого должен выглядеть следующим образом:

['banana', 'grape'] 

Я понимаю, что я мог бы сделать это, используя for петли и .iteritems(), чтобы получить все ключи в список, а затем использовать список понимание на mylist и список, созданный в этом цикле чтобы получить второй вывод выше, но я надеялся, что смогу сделать это только с пониманием, поскольку это будет более элегантное решение.

Любые идеи?

+2

Вам просто нужно использовать 'не в' не так ли? – Hammerite

+0

Кстати, вместо того, чтобы создавать генератор кортежей, а затем передать это 'dict()', вы можете сделать понимание слова непосредственно с помощью 'test1 = {x: mydict [x] для x в ...'. – TigerhawkT3

ответ

1

Да, вы можете сделать это с пониманием и фильтром:

newlist = [key for key in mylist if key not in mydict] 
+0

привет, я сделал то, что мне нужно. Благодарю. будет принимать через 10 минут, когда сможет. – gdogg371

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