利用set()方法实现对象去重,重写__hash__方法和__eq__方法告诉程序什么样的对象是同一个对象

# 写一个类 拥有100个对象
# 拥有三个属性 name age sex
# 如果两个对象的name 和 sex 完全相同
# 我们就认为这是一个对象
# 忽略age属性 做这100个对象的去重工作
class Person():
def __init__(self,name,age,sex):
self.name = name
self.age = age
self.sex = sex
def __hash__(self):
return hash(self.name+self.sex)
def __eq__(self, other):
if self.name == other.name and self.sex == other.sex:
return True
else:
return False if __name__ == '__main__':
list = []
for i in range(1,99):
list.append(Person('wangxiaojiang'+str(i),str(i),'female'))
list.append(Person('wangxiaojiang'+str(100),99,'female'))
list.append(Person('wangxiaojiang'+str(100),100,'female'))
list1 = set(list)
print(len(list1))

  程序输出99,对象去重成功

python 实现对象去重的更多相关文章

  1. Python 类对象去重

    注:set 对类对象去重,在于重写__eq__方法和__hash__方法,如果没有重写__hash__会导致People类对象不是可hash的 #!/usr/bin/env python # -*- ...

  2. python面对对象编程------4:类基本的特殊方法__str__,__repr__,__hash__,__new__,__bool__,6大比较方法

    一:string相关:__str__(),__repr__(),__format__() str方法更面向人类阅读,print()使用的就是str repr方法更面对python,目标是希望生成一个放 ...

  3. python 判断对象是否相等以及eq函数

    当对两个点的实例进行值的比较时,比如p1=Point(1,1) p2=Point(1,2),判断p1==p2时__eq__()会被调用,用以判断两个实例是否相等.在上述代码中定义了只要x和y的坐标相同 ...

  4. Python的对象操作(一)

    python支持对象和函数   1. python是解释型语言,逐行运行 2. 对象调用 例子:删除文件的一个例子 2.1 先定义一个类 class MyApp: 2.2 import 引用要用到的模 ...

  5. Python进阶 - 对象,名字以及绑定

    Python进阶 - 对象,名字以及绑定 1.一切皆对象 Python哲学: Python中一切皆对象 1.1 数据模型-对象,值以及类型 对象是Python对数据的抽象.Python程序中所有的数据 ...

  6. Python 文件对象

    Python 文件对象 1) 内置函数 open() 用于打开和创建文件对象 open(name,[,mode[,bufsize]]) 文件名.模式.缓冲区参数 mode: r 只读 w 写入 a 附 ...

  7. python中对象、类型和元类之间的关系

    在python中对象.类型和元类构成了一个微妙的世界. 他们有在这个世界里和平共处,相辅相成.它们遵循着几条亘古不变的定律: 1.python中无处不对象 2.所有对象都有三种特性:id.类型.值 3 ...

  8. 帮Python找“对象”

    引言:你一定会感叹:Python还缺找对象? 毕竟"一切皆对象"是人家Python的哲学理念.不过,Python  允许程序员以纯粹的面向过程的方式来使用它,所以人们有时会忽视它那 ...

  9. 完全理解 Python 迭代对象、迭代器、生成器(转)

    完全理解 Python 迭代对象.迭代器.生成器 本文源自RQ作者的一篇博文,原文是Iterables vs. Iterators vs. Generators » nvie.com,俺写的这篇文章是 ...

随机推荐

  1. webpack4.0打包优化策略整理小结

    本文转载于:https://www.jb51.net/article/137449.htm 介绍了webpack4.0打包优化策略整理小结,分享给大家,具体如下: webapck4 新特性介绍-参考资 ...

  2. rabbitmq 一些属性

    消息属性 消息有14个属性,最常用的几种: deliveryMode:持久化属性 contentType:编码 replyTo:指定一个回调队列 correlationId:消息id mandator ...

  3. proc文件系统详解

    /proc 文件系统是一个虚拟文件系统,通过它可以使用一种新的方法在 Linux内核空间和用户间之间进行通信.在 /proc 文件系统中,我们可以将对虚拟文件的读写作为与内核中实体进行通信的一种手段, ...

  4. How to find First Non-Repeated Character from String

    You need to write a function, which will accept a String and return first non-repeated character, fo ...

  5. mouseout([[data],fn])

    mouseout([[data],fn]) 概述 当鼠标指针从元素上移开时,发生 mouseout 事件. 该事件大多数时候会与 mouseover 事件一起使用.深圳dd马达 注释:与 mousel ...

  6. pyecharts v1 版本 学习笔记 散点图

    散点图 基本案例 from example.commons import Faker from pyecharts import options as opts from pyecharts.char ...

  7. 10 | MySQL为什么有时候会选错索引?

    前面我们介绍过索引,你已经知道了在MySQL中一张表其实是可以支持多个索引的.但是,你写SQL语句的时候,并没有主动指定使用哪个索引.也就是说,使用哪个索引是由MySQL来确定的. 不知道你有没有碰到 ...

  8. How to change the default browser in Visual Studio

    http://www.hanselman.com/blog/HowToChangeTheDefaultBrowserInVisualStudioProgrammaticallyWithPowerShe ...

  9. 富文本编辑器粘贴word

    很多时候我们用一些管理系统的时候,发布新闻.公告等文字类信息时,希望能很快的将word里面的内容直接粘贴到富文本编辑器里面,然后发布出来.减少排版复杂的工作量. 下面是借用百度doc 来快速实现这个w ...

  10. 路由器配置——PAP与CHAP认证

    一.实验目的:掌握PAP与CHAP认证配置 二.拓扑图: 三.具体步骤配置: (1)R1路由器配置: Router>enable  --进入特权模式 Router#configure termi ...