最近在嘗試寫選課系統的時候遇到乙個問題:
1、存在兩個類 school、teacher ;
2、school例項中包含多個teacher的例項,但又不可重複
本人想到在school中用set()儲存,但是新增teacher例項的時候做不到去重,後來猜測應該是set會自動呼叫__eq__方法比較物件是否重複,因此重寫了該方法:
def __eq__(self, other):結果仍然報錯typeerror: unhashable type,如下:return self.name == other.name
研究了很久,發現teacher無法hash的原因是該類中缺少__hash__方法,導致直譯器不知道如何雜湊該物件,新增以下**後問題解決:
def綜上發現:__hash__
(self):
return hash(self.name)
如果想要將物件用set去重,需要重寫__eq__和__hash__兩個方法。
python中的set實現不重複的排序原理
最近在嘗試寫選課系統的時候遇到乙個問題 1 存在兩個類 school teacher 2 school例項中包含多個teacher的例項,但又不可重複 本人想到在school中用set 儲存,但是新增teacher例項的時候做不到去重,後來猜測應該是set會自動呼叫 eq 方法比較物件是否重複,因此...
python中的set操作
python view plain copy python的set和其他語言類似,是乙個無序不重複元素集,基本功能包括關係測試和消除重複元素.集合物件還支援union 聯合 intersection 交 difference 差 和sysmmetric difference 對稱差集 等數 算.se...
python中的set操作
python的set和其他語言類似,是乙個無序不重複元素集,基本功能包括關係測試和消除重複元素.集合物件還支援union 聯合 intersection 交 difference 差 和sysmmetric difference 對稱差集 等數 算.sets 支援 x in set,len set ...