说我有字典词典的过滤器列表:的Python - 基于多键
myDict = [{'first': 'James', 'middle': 'Smith', 'last': 'Joule'},
{'first': 'James', 'middle': 'Johnson', 'last': 'Watt'},
{'first': 'Christian', 'middle': 'Edward', 'last': 'Doppler'}
{'first': 'Robert', 'last': 'Antonio'}]
而且我有一个列表称为键:
keys = ["middle", "last"]
我想根据每个值过滤myDict在键,这将导致
filteredDict = [{'middle': 'Smith', 'last': 'Joule'},
{'middle': 'Johnson', 'last': 'Watt'},
{'middle': 'Edward', 'last': 'Doppler'},
{'last': 'Antonio'}]
如在myDict名单列表中看到字典,词典不必须有两个键为了被放入filteredDict。是否有一种简单的方法可以在Python中使用字典理解来实现这一点?
我只是把*键*转换为* set * - 以加快查找速度 – volcano
此外,使用列表理解代替'map'看起来更清洁一些,所以只需写[[k:v for k,v)in x.items()if k in keys} for myDict]' –
顺便说一句,* map *是理解的另一种形式。而且,由于在Python 3中它会生成* map * object - 这本质上是迭代器,理解将是普遍的选择。 – volcano