[英]Filter a list of dictionaries by a list of keys in Python3
如何過濾Python3中的詞典列表?
results = [{'name':'jason','email':'test1@example.com'},
{'name':'mike','email':'test2@example.com'},
{'name':'eric','email':'test3@example.com'}]
allowed_keys = ['name']
我以為我可以做這樣的事情:
results2 = dict((k, v) for k,v, in results.items() if k in allowed_keys)
但是我得到這個錯誤:
>> AttributeError: 'list' object has no attribute 'items'
這是線程安全的嗎?
根據您的澄清評論,“我想返回僅包含鍵“名稱”的詞典列表:
>>> [{k: d[k] for k in allowed_keys} for d in results]
[{'name': 'jason'}, {'name': 'mike'}, {'name': 'eric'}]
注意:此解決方案假定, allowed_keys
中的所有鍵都保證在結果的每個字典中。 如果不是,請執行此操作(但請注意,最終可能會得到一些空字典):
[{k: d[k] for k in allowed_keys if k in d} for d in results]
一個班輪有點雜亂,但是就在這里。 簡而言之,您忘了添加一個外循環來遍歷所有字典。
new_results = [dict((k, v) for k, v in d.items() if k in allowed_keys) for d in results]
也許是一種更具可讀性的解決方案:
new_results = []
for d in results:
new_d = {}
for k, v in d.items():
if k in allowed_keys:
new_d[k] = v
new_results.append(new_d)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.