如果该值存在于词典列表中,则从列表中删除值

时间:2014-02-09 00:29:35

标签: python dictionary

我有一个词典,例如:

a = {1: {1:2, 3:4}, 2: {4:5, 6:7}}

以及包含字典的列表,例如:

b = [{1:2, 3:4}, {9:10}]

如果列表b中有“a”的任何值,我如何从“a”字典中删除特定项目?

我需要获得此输出:

a = {2: {4:5, 6:7}}

谢谢!

2 个答案:

答案 0 :(得分:0)

您可以使用dictionary comprehension

>>> a = {1: {1:2, 3:4}, 2: {4:5, 6:7}}
>>> b = [{1:2, 3:4}, {9:10}]
>>> {k:v for k,v in a.items() if v not in b}
{2: {4: 5, 6: 7}}
>>>

答案 1 :(得分:0)

a = {key: value for key, value in a.items() if value not in b}

这对列表理解非常简单。如果你期望在b中有很多项目,那么使用集合操作可能会更快:

b_set = {frozenset(d.items()) for d in b}
a = {key: value for key, value in a.items()
     if frozenset(value.items()) not in b_set}