zoukankan      html  css  js  c++  java
  • 【python之路49】使用set底层原理实现对象去重

    #一个员工类,创建了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)
  • 相关阅读:
    react-redux
    Vue中常用的UI框架
    vue中router与route的区别
    H5新增input属性
    H5新增的input类型
    菜鸡对作用域链的理解
    自己对路由的一些理解
    浏览器缓存
    黄瓜的不定期更新面试题
    ajax封装
  • 原文地址:https://www.cnblogs.com/sunshuhai/p/12655455.html
Copyright © 2011-2022 走看看