我有一个dicts列表,例如:
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])
显然这不起作用,但我很想知道我是否接近。我也有兴趣看看这是否可能是一行。
答案 0 :(得分:2)
new_data=[x for x in data if x['id'] not in remove_ids]
答案 1 :(得分:2)
data = [d for d in data if d['id'] not in remove_ids]
答案 2 :(得分:2)
您可以使用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))