Python中對象在集合set()的剔重

1531564399614.jpeg
  1. 集合set剔重
#conding:utf-8

class User:      #創(chuàng)建一個類
    def __init__(self, name,age):      #初始化各個形參
        self.name = name
        self.age = age

    def __hash__(self):                #哈希算法把形參轉(zhuǎn)為一個數(shù)值
        return self.name.__hash__()    #把形參 name 字符串,轉(zhuǎn)換為數(shù)值
    
    def __eq__(self, other):         #一般都跟隨__hash__()出現(xiàn),把轉(zhuǎn)換過來的值,進行比較
        if self.age == other.age:
            return True
        return False
    
    def __repr__(self):      
        return self.name + ";"  + self.age

u1 = User('tom', '18')                #創(chuàng)建一個對象
u2 = User('jerry', '20')              #再創(chuàng)建一個對象
u3 = User('shuke', '22')              #創(chuàng)建多個對象
u4 = User('tom', '90')                ····
u5 = User('jerry', '90')              ····

u = set()       #創(chuàng)建集合
print(u)

u.add(u1)      #把u1對象加入集合中
print(u)          #輸出集合 u

u.add(u2)      #把u2對象加入集合中
print(u)

u.add(u3)      #把u3對象加入集合中
print(u)

u.add(u4)      #把u4對象加入集合中
print(u)

u.add(u5)      #把u5對象加入集合中
print(u)

輸出結(jié)果為:

set()
{tom;18}
{tom;18, jerry;20}
{tom;18, jerry;20, shuke;22}
{tom;18, jerry;20, shuke;22}     #對象u4 沒有被加入集合,因為u4的name和u1的name相同,被成功剔除
{tom;18, jerry;20, shuke;22}     #對象u5 沒有被加入集合,因為u5的name和u2的name相同,被成功剔除
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容