簡體   English   中英

從具有匹配屬性的字典列表中刪除項目

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

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