比较python中的字典集

时间:2014-12-16 01:25:47

标签: python dictionary set

我感兴趣的是比较两组词典。我知道,为了做到这一点,字典必须使用冷冻集来制作,但接下来是什么?一种优雅的方式来比较可清洗的字典键?

actual_set = [{
    'Cgroups': 'rwm',
    'PathInContainer': '/dev/xnull',
    'PathOnHost': '/dev/null'
}]

d = {
    'Cgroups': 'rwm',
    'PathInContainer': '/dev/xnull',
    'PathOnHost': '/dev/null'
}
hashed_devices = frozenset(expected_devices.items())

for key in hashed_devices:
    # assert actual_Set == set(hashed_Devices)

这里如何将实际集与散列设备进行比较?

1 个答案:

答案 0 :(得分:1)

如果您只想查找两个词典是否相同,那么这四个词典会给您最好的答案:dict1 == dict2

如果要查找两个词典之间的区别,可以尝试set的symmetric_difference()操作。例如,

dict1 = {'a':1, 'b':2, 'c':3}
dict2 = {'b':2, 'c':3, 'd':4}

set1 = set(dict1.items())
set2 = set(dict2.items())

set1.symmetric_difference(set2)会显示一个带有(键,值)对的新集合,这些对在dict1或dict2中,但不是两者都有,这里是set([('a', 1), ('d', 4)])

顺便说一句,您可以轻松使用dict()将其转换为包含dict1和dict2之差的字典。