用dict找到正确的差异

时间:2019-02-01 16:57:37

标签: python python-3.x dictionary

我有变化的时间顺序项的字典,我保留以前的状态在一个全局变量进行比较。我正在尝试确定它们之间是否有区别以及该区别是什么。另外,区别在于第二个字典是对第一个字典进行加,减还是修改。

使用set的对称差异可以告诉我发生了什么变化,但不能告诉我它是加还是减。所以那行不通。

作为参考,字典比较可能类似于:

a = {419: 'test'}
b = {419: 'test', 418: 'new'}

在这种情况下,我想吐出{418: 'new'}中的溶液。

另一种情况可能是:

a = {419: 'test'}
b = {419: 'test1234'}

我想吐出{419: 'test1234'}已被修改。

1 个答案:

答案 0 :(得分:0)

不使用对称差,一次使用一个差:

>>> a = {419: 'test'}
>>> b = {419: 'test', 418: 'new'}
>>> removed = a.items() - b.items()
>>> removed
set()
>>> if removed: print("removed: ", *removed)
...
>>> added = b.items() - a.items()
>>>
>>> added
{(418, 'new')}
>>> if added: print("added: ", *added)
...
added:  (418, 'new')

现在,通过检查项目是否在差异之后的原始dict(只是键)中来处理“已更改”。