比较python中的2个字典

时间:2018-12-12 19:31:50

标签: python dictionary

嗨,我有2个字典,其中第1个有266个条目,第2个字典有136个。因此,通过比较两个字典,我希望得到不匹配的结果。

例如dic 1比dic 2多130个数据。所以我需要那130个不匹配的数据。

对此有逻辑吗?

谢谢

3 个答案:

答案 0 :(得分:2)

Python 2:

假设“输入”是指“键”,一种解决方案是在字典键上使用集差异,例如set(dict1.keys()) - set(dict2.keys())

示例:

>>> a = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
>>> b = {'a': 1, 'c': 3}
>>> a.keys()
['a', 'c', 'b', 'd']
>>> b.keys()
['a', 'c']
>>> set(a.keys())-set(b.keys())
set(['b', 'd'])
>>>

使用set(dict1.keys()) ^ set(dict2.keys()),您将获得在两个字典中都存在但不在两个字典中的键集。

Python 3

Python 3中的keys()词典方法直接支持集合差异(-)和对称差异(^),因此您可以编写

dict1.keys() - dict2.keys()
dict1.keys() ^ dict2.keys()

答案 1 :(得分:1)

我们是否假设266个元素的字典包含与较小的字典相同的130个条目,再加上136个元素?

如果是这样,您可以创建第三个空字典并循环浏览较大的字典,以查看该条目是否在较小的字典中。如果没有,则将其添加到新词典中。

newdict = {}
For item in largerdict:
  if item not in smallerdict:
    newdict[item] = largerdict[item]

答案 2 :(得分:1)

以下是使用python 3词典理解语法创建没有其他元素的新词典的示例:

big_dict = {'t2': 2, 't': 1}
small_dict = {'t': 1}
new_dict = {k: v for (k, v) in big_dict.items() if k not in small_dict}
print(new_dict)