0

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

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

我正在考虑对所有单独的哈希进行异或运算,但也许还有另一种现成的解决方案?

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

4

2 回答 2

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
于 2012-09-25T10:30:05.710 回答
0

请参阅 映射类型的文档。您已经定义了运算符来对字典进行各种操作。

于 2012-09-25T10:18:08.210 回答