0

例如,我有一个字典列表:

data = [
    { 'id': 1 },
    { 'id': 2 },
    { 'id': 3 },
    { 'id': 4 },
    { 'id': 5 },
]

remove_ids = [3,4]

所以我想申请remove_idslist最终得到:

list = [
    { 'id': 1 },
    { 'id': 2 },
    { 'id': 5 },
]

我在想一些事情:

data.remove([item (if item['id'] in remove_ids) for k, item in data])

显然这不起作用,但我很想知道我是否接近。我也有兴趣看看这是否可能在一行中。

4

3 回答 3

2
new_data=[x for x in data if x['id'] not in remove_ids]
于 2013-01-08T14:50:00.510 回答
2
data = [d for d in data if d['id'] not in remove_ids]
于 2013-01-08T14:50:01.273 回答
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))
于 2013-01-08T14:51:17.620 回答