在 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)