我有一个字典列表:
list_with_dicts = [{"nbr": 1, "id": 11}, {"nbr": 2, "id": 13}, {"nbr": 3, "id": 15}, ...]
我有一个列表,其中包含我想从列表中删除的所有 id:s 和字典:
ids = [11, 15, ...]
我怎样才能有效地做到这一点?我看到了这个答案 here,但是它没有涵盖我是否需要遍历 ids
列表。
答案 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]