我有一个字典,其中某些值不可散列。我需要某种方法来比较其中的两个无序组,以确保它们包含相等的元素。我不能使用列表,因为列表相等性考虑了顺序,但是集合不起作用,因为字典不可散列。我浏览了python文档,看起来唯一有用的是dict的 View ,该 View 在某些情况下是可哈希的,但在这种情况下,这无济于事,因为其中一个值是包含列表本身的对象,表示dict的 View 也不是可哈希的。
是否有用于这种情况的标准容器,还是应该只使用列表并遍历两个列表中的每个元素,并确保另一个列表中的某个元素相等?
最佳答案
当不存在重复的条目时,通常的选择是:
set(a) == set(b)
sorted(a) == sorted(b)
len(a) == len(b) and all(x in b for x in a)
如果您有重复项并且它们的多重性很重要,那么可以选择:
Counter(a) == Counter(b)
sorted(a) == sorted(b)
len(a) == len(b) and all(a.count(x) == b.count(x) for x in a)
关于python - 不可哈希对象的无序集合?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8332710/