比较两个字典,如果一个字典中存在键/值对,则将其删除

ske*_*tel 5 python dictionary duplicates python-3.x

我有两个字典。一个看起来像这样:

dict1 = {'ana': 'http://ted.com', 'louise': 'http://reddit.com', 'sarah':'http://time.com'}
Run Code Online (Sandbox Code Playgroud)

另一个看起来像这样:

dict2 = {'patricia': 'http://yahoo.com', 'ana': 'http://ted.com',
         'louise': 'http://reddit.com', 'florence': 'http://white.com'}
Run Code Online (Sandbox Code Playgroud)

我需要比较两个字典,并从dict2已经存在于其中的任何键/值对中消除dict1

如您所见,Ana和Louise已经存在于中dict1,因此我想自动将其从中删除dict2 。预期的输出将包含唯一的元素,dict2 并且尚未出现在中dict1,并且看起来像:

dict2 = {'patricia': 'http://yahoo.com', 'florence': 'http://white.com'}
Run Code Online (Sandbox Code Playgroud)

我不需要做任何关于莎拉进场的事情dict1。我只关心比较dict2dict1删除重复。

额外信息:

我尝试以多种不同方式遍历字典,但这给了我两种错误:not hashable typedict content changed during action

我也尝试将每个列表都组合成一个列表,但最终结果是另一个列表,我不知道如何将列表重新变成字典。

wim*_*wim 6

如果键匹配,Jim 的回答将删除项目。如果键值都匹配,我认为您想删除。这实际上非常简单,因为您使用的是 Python 3:

>>> dict(dict2.items() - dict1.items())
{'florence': 'http://white.com', 'patricia': 'http://yahoo.com'}
Run Code Online (Sandbox Code Playgroud)

它之所以有效,是因为dict_items对象将减法运算视为集合差。