如何从列表中删除某些字典?

时间:2021-07-08 07:21:33

标签: python list loops dictionary

我有一个字典列表:

list_with_dicts = [{"nbr": 1, "id": 11}, {"nbr": 2, "id": 13}, {"nbr": 3, "id": 15}, ...]

我有一个列表,其中包含我想从列表中删除的所有 id:s 和字典:

ids = [11, 15, ...]

我怎样才能有效地做到这一点?我看到了这个答案 here,但是它没有涵盖我是否需要遍历 ids 列表。

1 个答案:

答案 0 :(得分:0)

您不必迭代 ids 列表,至少不必显式地迭代。迭代字典列表并使用 id 检查 ids 值是否在 in 列表中。如果您遍历列表的副本,您可以使用 remove(dict) 从列表中删除字典

list_with_dicts = [{"nbr": 1, "id": 11}, {"nbr": 3, "id": 15}, {"nbr": 2, "id": 13}]
ids = [11, 15]

for d in list_with_dicts[:]:
    if d['id'] in ids:
        list_with_dicts.remove(d)

print(list_with_dicts) # [{'nbr': 2, 'id': 13}]

如果您想保留原始列表,您可以使用列表推导式构建一个新列表

new_list_with_dicts = [d for d in list_with_dicts if d['id'] not in ids]