比较python中的词典集
我对比较两组词典很感兴趣。我知道要做到这一点,词典必须是可散列的,可能需要使用冻结集,但是,比较可散列词典键的优雅方式是什么呢比较python中的词典集,python,dictionary,set,Python,Dictionary,Set,我对比较两组词典很感兴趣。我知道要做到这一点,词典必须是可散列的,可能需要使用冻结集,但是,比较可散列词典键的优雅方式是什么呢 actual_set = [{ 'Cgroups': 'rwm', 'PathInContainer': '/dev/xnull', 'PathOnHost': '/dev/null' }] d = { 'Cgroups': 'rwm', 'PathInContainer': '/dev/xnull', 'PathOnH
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)
在这里,我如何将实际集合与散列设备进行比较?如果您只想找出两个词典是否相同,那么它们给出的四个词典是最佳答案:
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的差异。比较是什么意思?是否要匹配所有键、所有值或所有键和值?通常,
dict1==dict2
就足够了。您所调用的actual\u set
不是set
,而是一个list
…我想将d的值与实际set的值匹配,因为键对我来说是静态的。对不起,我错过了那个信息。