如何扭转这种理解?

时间:2015-09-03 17:09:37

标签: python list-comprehension

我有以下代码,它返回一个使用列表和理解的子集的字典,这样产品列表只包含密钥是列表中元素的对:

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}

我现在想要的并且无法弄清楚该怎么做是一种理解,它会给我一个mylistmydict中不是['banana', 'grape'] 中关键字的所有元素的新列表。这个输出应该如下:

for

我意识到我可以使用.iteritems()循环和mylist将所有密钥放入列表中,然后使用.then()上的列表解析和此循环中创建的列表获得上面的第二个输出,但我希望我能够理解,因为这将是一个更优雅的解决方案。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

是的,你可以通过理解和过滤器来做到这一点:

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