python中的set实现不重复的排序原理


Posted in Python onJanuary 24, 2018

最近在尝试写选课系统的时候遇到一个问题:

1、存在两个类 School、Teacher ;

2、School实例中包含多个Teacher的实例,但又不可重复

本人想到在School中用set()存储,但是添加Teacher实例的时候做不到去重,后来猜测应该是set会自动调用__eq__方法比较对象是否重复,因此重写了该方法:

def __eq__(self, other):
  return self.name == other.name

 

结果仍然报错TypeError: unhashable type,如下:

python中的set实现不重复的排序原理

研究了很久,发现Teacher无法hash的原因是该类中缺少__hash__方法,导致解释器不知道如何哈希该对象,添加以下代码后问题解决:

def __hash__(self):
    return hash(self.name)

综上发现:

如果想要将对象用set去重,需要重写__eq__和__hash__两个方法。

总结

以上所述是小编给大家介绍的python中的set实现不重复的排序原理,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
Python爬取读者并制作成PDF
Mar 10 Python
深入浅析python定时杀进程
Jun 06 Python
利用Python批量生成任意尺寸的图片
Aug 29 Python
Python脚本实时处理log文件的方法
Nov 21 Python
用十张图详解TensorFlow数据读取机制(附代码)
Feb 06 Python
python实现抖音点赞功能
Apr 07 Python
Django中自定义查询对象的具体使用
Oct 13 Python
Python FTP文件定时自动下载实现过程解析
Nov 12 Python
python设置环境变量的作用整理
Feb 17 Python
使用darknet框架的imagenet数据分类预训练操作
Jul 07 Python
python实现简单的学生管理系统
Feb 22 Python
Pygame Time时间控制的具体使用详解
Nov 17 Python
详解Python之unittest单元测试代码
Jan 24 #Python
python爬取拉勾网职位数据的方法
Jan 24 #Python
学习Python3 Dlib19.7进行人脸面部识别
Jan 24 #Python
Python实现的生成格雷码功能示例
Jan 24 #Python
Python使用requests及BeautifulSoup构建爬虫实例代码
Jan 24 #Python
Python3结合Dlib实现人脸识别和剪切
Jan 24 #Python
深入浅析Python中的yield关键字
Jan 24 #Python
You might like
destoon实现资讯信息前面调用它所属分类的方法
2014/07/15 PHP
php遍历目录方法小结
2015/03/10 PHP
非集成环境的php运行环境(Apache配置、Mysql)搭建安装图文教程
2016/04/12 PHP
php实现产品加入购物车功能(1)
2020/07/23 PHP
javascript正则表达式中的replace方法详解
2015/04/20 Javascript
Bootstrap下拉菜单效果实例代码分享
2016/06/30 Javascript
Spring MVC中Ajax实现二级联动的简单实例
2016/07/06 Javascript
Bootstrap 表单验证formValidation 实现表单动态验证功能
2017/05/17 Javascript
浅谈箭头函数写法在ReactJs中的使用
2017/08/22 Javascript
javascript流程控制语句集合
2017/09/18 Javascript
js动态引入的四种方法
2018/05/05 Javascript
JS去除字符串最后的逗号实例分析【四种方法】
2019/06/20 Javascript
JavaScript表格隔行变色和Tab标签页特效示例【附jQuery版】
2019/07/11 jQuery
关于vue利用postcss-pxtorem进行移动端适配的问题
2019/11/20 Javascript
python实现的文件夹清理程序分享
2014/11/22 Python
python 判断网络连通的实现方法
2018/04/22 Python
numpy添加新的维度:newaxis的方法
2018/08/02 Python
详解django自定义中间件处理
2018/11/21 Python
python使用thrift教程的方法示例
2019/03/21 Python
Python搭建代理IP池实现接口设置与整体调度
2019/10/27 Python
纯CSS3实现3D旋转书本效果
2016/03/21 HTML / CSS
CSS3径向渐变之大鱼吃小鱼之孤单的大鱼
2016/04/26 HTML / CSS
html5 worker 实例(一) 为什么测试不到效果
2013/06/24 HTML / CSS
Crocs卡骆驰洞洞鞋日本官方网站:Crocs日本
2016/08/25 全球购物
竞争上岗演讲稿
2014/01/05 职场文书
出纳担保书范文
2014/04/02 职场文书
驾驶员培训方案
2014/05/01 职场文书
安全目标责任书
2014/07/22 职场文书
学校计划生育责任书
2015/05/09 职场文书
2015秋季开学典礼致辞
2015/07/16 职场文书
素质教育学习心得体会
2016/01/19 职场文书
CocosCreator ScrollView优化系列之分帧加载
2021/04/14 Python
JavaScript如何利用Promise控制并发请求个数
2021/05/14 Javascript
Python竟然能剪辑视频
2021/05/25 Python
MySQL 主从复制数据不一致的解决方法
2022/03/18 MySQL
MySQL性能指标TPS+QPS+IOPS压测
2022/08/05 MySQL