我有变化的时间顺序项的字典,我保留以前的状态在一个全局变量进行比较。我正在尝试确定它们之间是否有区别以及该区别是什么。另外,区别在于第二个字典是对第一个字典进行加,减还是修改。
使用set的对称差异可以告诉我发生了什么变化,但不能告诉我它是加还是减。所以那行不通。
作为参考,字典比较可能类似于:
a = {419: 'test'}
b = {419: 'test', 418: 'new'}
在这种情况下,我想吐出{418: 'new'}
中的溶液。
另一种情况可能是:
a = {419: 'test'}
b = {419: 'test1234'}
我想吐出{419: 'test1234'}
已被修改。
答案 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(只是键)中来处理“已更改”。