美文网首页Python
Python中对象在集合set()的剔重

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

作者: 用1心 | 来源:发表于2018-08-02 21:55 被阅读0次
    1531564399614.jpeg
    1. 集合set剔重
    #conding:utf-8
    
    class User:      #创建一个类
        def __init__(self, name,age):      #初始化各个形参
            self.name = name
            self.age = age
    
        def __hash__(self):                #哈希算法把形参转为一个数值
            return self.name.__hash__()    #把形参 name 字符串,转换为数值
        
        def __eq__(self, other):         #一般都跟随__hash__()出现,把转换过来的值,进行比较
            if self.age == other.age:
                return True
            return False
        
        def __repr__(self):      
            return self.name + ";"  + self.age
    
    u1 = User('tom', '18')                #创建一个对象
    u2 = User('jerry', '20')              #再创建一个对象
    u3 = User('shuke', '22')              #创建多个对象
    u4 = User('tom', '90')                ····
    u5 = User('jerry', '90')              ····
    
    u = set()       #创建集合
    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)
    

    输出结果为:

    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相同,被成功剔除
    

    相关文章

      网友评论

        本文标题:Python中对象在集合set()的剔重

        本文链接:https://www.haomeiwen.com/subject/aoxevftx.html