我需要有效地拥有一个 diff 字典,告诉我在某个时间点和现在的主要字典之间有什么区别。
我需要有更改内容的完整路径,而不仅仅是更改的值。
例如:
primary_dict = {'a': 5, 'b':{'c': 9}, 'd':10}
区别是
diff_dict = {'a':6, 'b':{'c':8}}
目前来说
primary_dict = {'a':6, 'b':{'c':8}, 'd':10}
我可以在向字典添加值时创建差异
我在网上看过,但只发现了 2 部词典之间的比较,这会很低效,因为我需要比较的词典很大,保存它 2 次并递归地比较它似乎对手头的问题很有帮助
编辑: 将问题更改为更准确。 就像我被告知反射(reflect)我的需要的问题是: 如何在不创建新变量的情况下随时间对字典进行更改? 感谢@CristiFati 和@Vishnudev 的更正
最佳答案
使用dictdiffer
库
>>> from dictdiffer import diff
>>> before_change = {'a': 5, 'b':{'c': 9}, 'd':10}
>>> after_change = {'a': 6, 'b':{'c':8, 'd': 10}, 'd':10}
>>> list(diff(before_change, after_change))
[('change', 'a', (5, 6)), ('change', 'b.c', (9, 8)), ('add', 'b', [('d', 10)])]
对于删除的键,
>>> before_change = {'a': 5, 'b':{'c': 9}, 'd':10}
>>> after_change = {'a': 6, 'b':{'d': 10}, 'd':10}
>>> list(diff(before_change, after_change))
[('change', 'a', (5, 6)), ('add', 'b', [('d', 10)]), ('remove', 'b', [('c', 9)])]
关于python - 插入值时如何存储dict的差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56617962/