簡體   English   中英

根據鍵過濾Python中的詞典列表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM