說我有字典詞典的過濾器列表:的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