码迷,mamicode.com
首页 > 编程语言 > 详细

【python之路49】使用set底层原理实现对象去重

时间:2020-04-07 20:14:18      阅读:118      评论:0      收藏:0      [点我收藏+]

标签:实现   ict   iba   底层原理   range   code   int   def   原理   

#一个员工类,创建了300个对象,假设当name gender相同时则认为是同一个人,请给这300个对象去重
#一个员工类,创建了300个对象,假设当name gender相同时则认为是同一个人,请给这300个对象去重

class Employee:
    def __init__(self, name, age ,gender):
        self.name = name
        self.age = age
        self.gender = gender
    def __hash__(self):
        return hash("%s%s" % (self.name, self.gender))

    def __eq__(self, other):
        if self.name == other.name and self.gender == other.gender:
            return True
        return False

li =[]
for i in range(100):
    li.append(Employee(sunxiao, i, "male"))

for i in range(100):
    li.append(Employee(ruhua, i, "female"))

for i in range(100):
    li.append(Employee(taibai, i, "male"))

#set底层实现逻辑,实际去调用转化对象的类的__hash__方法,如果不同则写入,如果是相同则通过
#__eq__方法判断是否相同,如果相同则不再写入,如果不同则写入
result = set(li)

for i in result:
    print(i.__dict__)
print(result)

 

【python之路49】使用set底层原理实现对象去重

标签:实现   ict   iba   底层原理   range   code   int   def   原理   

原文地址:https://www.cnblogs.com/sunshuhai/p/12655455.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!