1531564399614.jpeg
- 集合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相同靶擦,被成功剔除