python中的set實現不重複的排序原理

2022-09-28 05:06:11 字數 699 閱讀 8344

最近在嘗試寫選課系統的時候遇到乙個問題:

1、存在兩個類 school、teacher ;

2、school例項中包含多個teacher的例項,但又不可重複

本人想到在school中用set()儲存,但是新增teacher例項的時候做不到去重,後來猜測應該是set會自動呼叫__eq__方法比較物件是否重複,因此重寫了該方法:

def __eq__(self, other):

return程式設計客棧 self.na程式設計客棧mwww.cppcns.come == other.name

結果仍然報錯typeerror: unhashable type,如下:

研究了很久,發現teacher無法hash的原因是該類中缺少__hash__方法,導致直譯器不知道如何雜湊該物件,新增以下**後問題解決:

def __hash__(self):

return hash(self.name)

綜上發現:

如果想要將物件用set去重,需要重寫__eq__和__hash__兩個方法。

總結以上所述是小編給大家介紹的python中的set程式設計客棧實現不重複的排序原理,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回覆大家的。在此也非常感謝大家對我們**的支援!

本文標題: python中的set實現不重複的排序原理

本文位址: /jiaoben/python/218542.html

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 ...