[英]Remove items from list of dicts with a matching attribute
我有一個字典列表,例如:
data = [
{ 'id': 1 },
{ 'id': 2 },
{ 'id': 3 },
{ 'id': 4 },
{ 'id': 5 },
]
remove_ids = [3,4]
因此,我想將remove_ids
應用於list
並僅以以下結尾:
list = [
{ 'id': 1 },
{ 'id': 2 },
{ 'id': 5 },
]
我在考慮以下方面:
data.remove([item (if item['id'] in remove_ids) for k, item in data])
顯然這是行不通的,但是我很想知道自己是否接近。 我也很想看看這是否可能在一行中。
new_data=[x for x in data if x['id'] not in remove_ids]
data = [d for d in data if d['id'] not in remove_ids]
您可以使用filter
。
remove_ids = (3, 4)
filtered_data = filter(lambda item: item['id'] not in remove_ids, data)
如果data
很大或您經常這樣做,則還可以從itertools
受益。
from itertools import ifilterfalse
remove_ids = (3, 4)
filtered_data = tuple(ifilterfalse(lambda item: item['id'] in remove_ids, data))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.