如何扭转这种理解?

2024-04-25 11:50:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我有下面的代码,它返回一个字典,该字典已使用列表和理解进行子集化,因此产品列表仅包含键是列表中元素的对:

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上的列表理解和在这个循环中创建的列表来获得上面的第二个输出,但是我希望我可以通过理解来完成,因为这将是一个更优雅的解决方案。你知道吗

有什么想法吗?你知道吗


Tags: 代码in元素apple列表for字典mydict