【问题标题】:Comparing set of dictionaries in python比较python中的字典集
【发布时间】:2014-12-16 01:25:46
【问题描述】:

我对比较两组字典很感兴趣。我知道为此,必须使用frozenset 将字典设为可散列,但那么比较可散列字典键的优雅方法是什么?

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 就足够了。
  • 您所称的actual_set 不是set,实际上是list...
  • 我想将 d 的值与实际设置的值相匹配,因为键对我来说是静态的。抱歉,我错过了这些信息。

标签: python dictionary set


【解决方案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) 将向您显示一个新集合,其中包含 (key, value) 对,它们在 dict1 或 dict2 中,但不是同时在两者中,这里是 set([('a', 1), ('d', 4)])

顺便说一句,你可以很容易地使用 dict() 将其转换为字典,包括 dict1 和 dict2 的区别。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-15
    • 1970-01-01
    • 1970-01-01
    • 2010-09-30
    • 2021-08-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多