[英]Filter a list of dictionaries in Python based on key
我將需要過濾詞典列表,以僅保留具有稱為“子級”鍵的詞典。 這是列表的示例:
[{u'id': 5650, u'children': [{u'id': 4635}]}, {u'id': 5648, u'children': [{u'id': 67}, {u'id': 77}]}, {u'id': 5649}]
這是我需要獲得的:
[{u'id': 5650, u'children': [{u'id': 4635}]}, {u'id': 5648, u'children': [{u'id': 67}, {u'id': 77}]}]
這是我嘗試過的:
dict((k, data[k]) for k in keys if k in data)
而且我得到的是不好的:
[{u'children': [{u'id': 4635}]}, {u'children': [{u'id': 67}, {u'id': 77}]}, {}]
有什么線索嗎? 提前致謝!
您可以使用filter()
函數。 它需要兩個參數filter(function, iterable)
。 僅考慮函數返回的那些值。
a=[{u'id': 5650, u'children': [{u'id': 4635}]},
{u'id': 5648, u'children': [{u'id': 67}, {u'id': 77}]},
{u'id': 5649}]
print filter(lambda x: 'children' in x, a)
輸出:
[{u'id': 5650, u'children': [{u'id': 4635}]},
{u'id': 5648, u'children': [{u'id': 67}, {u'id': 77}]}]
filter(function, iterable)
等效於[item for item in iterable if function(item)]
這個怎么樣?
dict_list = [{u'id': 5650, u'children': [{u'id': 4635}]}, {u'id': 5648, u'children': [{u'id': 67}, {u'id': 77}]}, {u'id': 5649}]
filtered = [d for d in dict_list if 'children' in d]
print(filtered)
輸出量
[{'id': 5650, 'children': [{'id': 4635}]}, {'id': 5648, 'children': [{'id': 67}, {'id': 77}]}]
l = [{u'id': 5650, u'children': [{u'id': 4635}]}, {u'id': 5648, u'children': [{u'id': 67}, {u'id': 77}]}, {u'id': 5649}]
d = [k for k in l if 'children' in k]
print (d)
輸出:
[{u'id': 5650, u'children': [{u'id': 4635}]}, {u'id': 5648, u'children': [{u'id': 67}, {u'id': 77}]}]
重要的是第二行( d = ...
)。 這將遍歷列表中的每個字典,並檢查是否有“兒童”鍵。 如果有,它將被添加到列表中。 如果沒有,則將其跳過。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.