Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
比较python中的词典集_Python_Dictionary_Set - Fatal编程技术网

比较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的值匹配,因为键对我来说是静态的。对不起,我错过了那个信息。