我有以下代码,它返回一个使用列表和理解的子集的字典,这样产品列表只包含密钥是列表中元素的对:
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
将所有密钥放入列表中,然后使用.then()
上的列表解析和此循环中创建的列表获得上面的第二个输出,但我希望我能够理解,因为这将是一个更优雅的解决方案。
有什么想法吗?
答案 0 :(得分:1)
是的,你可以通过理解和过滤器来做到这一点:
newlist = [key for key in mylist if key not in mydict]