0

たとえば、dictのリストがあります。

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])

明らかにこれは機能しませんが、私は自分が近くにいたかどうかを知りたいと思っています。私はまた、これがおそらく単一の行にあるかどうかを確認することに興味がありました。

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 に答える