用di找出正确的差异

2024-09-25 06:33:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个按时间顺序更改项的字典,我在全局变量中保留以前的状态以供比较。我想确定他们之间是否有区别,以及区别是什么。另外,这个差异是对第一个dict的第二个dict的加、减或修改

使用set的对称差分可以告诉我发生了什么变化,但不能告诉我是加法还是减法。所以这不管用

作为参考,字典比较可能如下所示:

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

在这种情况下,我想吐出{418: 'new'}被添加了

另一种情况可能是:

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

我想吐出来{419: 'test1234'}被修改了


Tags: testnew字典顺序状态时间情况差分
1条回答
网友
1楼 · 发布于 2024-09-25 06:33:12

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

>>> 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(只是键)中来处理“changed”

相关问题 更多 >