我有一个字典,其中某些值不可散列。我需要某种方法来比较其中的两个无序组,以确保它们包含相等的元素。我不能使用列表,因为列表相等性考虑了顺序,但是集合不起作用,因为字典不可散列。我浏览了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/

    10-11 00:23