Python中的无序哈希

时间:2012-09-25 09:58:19

标签: python hash

我想按内容比较dicts,所以我认为这可以通过创建项元组的无序哈希来完成。

最优雅的解决方案是什么?

我在考虑对所有个别哈希进行异或,但也许还有另一个现成的解决方案?

编辑: 我有嵌套数据结构。有些类包含dicts。这些类可以聚合到集合中。那么为了将这些集与预定义的集合进行比较,我必须为我的dict-classes实现__eq__(这很容易)和__hash__(这是我的问题)?!

2 个答案:

答案 0 :(得分:2)

要检查重叠键的所有值是否相同,请执行以下操作之一(取决于Python版本)和样式:

if all(dict_a[key] == dict_b[key] for key in dict_a.viewkeys() & dict_b.viewkeys())

if all(dict_a[key] == dict_b[key] for key in set(dict_a) & set(dict_b))

更具体地处理“它们是相同的价值”......

for k, v in dict_a.iteritems():
    try:
        ov = dict_b[k]
    except KeyError as e:
        continue
    if v == ov: 
        pass # or whatever

答案 1 :(得分:0)

有关映射类型,请参阅documentation .. 您已经定义了运算符以对Dictionary进行各种操作。