如何在 Python 中区分两个字典?

新手上路,请多包涵

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

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

我在这里使用了一套:

 first_dict = {}
second_dict = {}

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

我的输出是:

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

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

原文由 Jayashree Shetty 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 304
2 个回答

使用字典理解尝试以下代码段:

 value = { k : second_dict[k] for k in set(second_dict) - set(first_dict) }

在上面的代码中我们找到 了key 的不同,然后重建一个 dict 取对应的值。

原文由 Óscar López 发布,翻译遵循 CC BY-SA 3.0 许可协议

我认为最好使用集合的对称差分操作来做到这一点 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')}

使用 差分运算符 时情况并非如此。

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

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

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

原文由 Roedy 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏