在 Python 中,set 是一个无序的、不重复的元素集合。当你试图将一个不可哈希(unhashable)类型的对象添加到 set 时,Python 会抛出一个 TypeError 异常。
不可哈希类型主要包括:
__hash__() 和 __eq__() 方法要解决这个问题,你可以采取以下方法之一:
my_list = [1, 2, 3] my_set = set(tuple(my_list)) __hash__() 和 __eq__() 方法。这样,Python 就可以计算对象的哈希值并进行比较。class MyClass: def __init__(self, value): self.value = value def __hash__(self): return hash(self.value) def __eq__(self, other): if isinstance(other, MyClass): return self.value == other.value return False my_set = set() obj1 = MyClass(1) obj2 = MyClass(2) my_set.add(obj1) my_set.add(obj2)