python - 如何在 Python 中获取两个字典之间的区别?

标签 python dictionary

我有两个字典,我需要找出两者之间的区别,这应该给我一个键和一个值。

我已经搜索并找到了一些插件/包,例如 datadiff 和 dictdiff-master,但是当我尝试在 Python 2.7 中导入它们时,它说没有定义这样的模块。

我在这里用了一套:

first_dict = {}
second_dict = {}
 
value = set(second_dict) - set(first_dict)
print value

我的输出是:

>>> set(['SCD-3547', 'SCD-3456'])

我只得到键,我还需要得到值。

最佳答案

我认为最好使用集合的对称差分运算来做到这一点Here is the link to the doc .

>>> dict1 = {1:'donkey', 2:'chicken', 3:'dog'}
>>> dict2 = {1:'donkey', 2:'chimpansee', 4:'chicken'}
>>> set1 = set(dict1.items())
>>> set2 = set(dict2.items())
>>> set1 ^ set2
{(2, 'chimpansee'), (4, 'chicken'), (2, 'chicken'), (3, 'dog')}

它是对称的,因为:

>>> set2 ^ set1
{(2, 'chimpansee'), (4, 'chicken'), (2, 'chicken'), (3, 'dog')}

使用 difference operator 时不是这种情况。 .

>>> set1 - set2
{(2, 'chicken'), (3, 'dog')}
>>> set2 - set1
{(2, 'chimpansee'), (4, 'chicken')}

但是,将结果集转换为字典可能不是一个好主意,因为您可能会丢失信息:

>>> dict(set1 ^ set2)
{2: 'chicken', 3: 'dog', 4: 'chicken'}

关于python - 如何在 Python 中获取两个字典之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32815640/

相关文章:

python - 为Python安装unicode csv?

python - 如何找到列表中元素开始和结束的单词索引? Python

Python:尝试将函数参数传递给类中的另一个函数,得到 NameError:未定义名称 ' '

dictionary - 如何在 ReasonML 中创建元组映射?

python - 访问字典,用字典中的信息替换用户输入中的项目

C#反射字典

arrays - 为什么map函数会改变perl中输入数组的值?

python - 在 tox 环境中为 pip install 命令设置 https 代理

python - 当句子的所有关键字都包含在字典中时,如何将句子与字典关联?

python - 将多边形列表合并为多边形