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中移动目录结构的方法
Jan 31 Python
Python探索之静态方法和类方法的区别详解
Oct 27 Python
使用Python和Prometheus跟踪天气的使用方法
May 06 Python
python 随机生成10位数密码的实现代码
Jun 27 Python
解决Django migrate不能发现app.models的表问题
Aug 31 Python
ubuntu 18.04 安装opencv3.4.5的教程(图解)
Nov 04 Python
pytorch masked_fill报错的解决
Feb 18 Python
Python基于内置库pytesseract实现图片验证码识别功能
Feb 24 Python
python实现TCP文件传输
Mar 20 Python
Python连接HDFS实现文件上传下载及Pandas转换文本文件到CSV操作
Jun 06 Python
python 爬虫基本使用——统计杭电oj题目正确率并排序
Oct 26 Python
python 实现全球IP归属地查询工具
Dec 18 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
用PHP和ACCESS写聊天室(四)
2006/10/09 PHP
JS 网站性能优化笔记
2011/05/24 PHP
PHP高级编程实例:编写守护进程
2014/09/02 PHP
递归实现php数组转xml的代码分享
2015/05/14 PHP
PHPStrom 新建FTP项目以及在线操作教程
2016/10/16 PHP
yii2.0框架使用 beforeAction 防非法登陆的方法分析
2019/09/11 PHP
PHP设计模式之装饰器(装饰者)模式(Decorator)入门与应用详解
2019/12/13 PHP
JavaScript调用Activex控件的事件的实现方法
2010/04/11 Javascript
浅谈JavaScript的事件
2015/02/27 Javascript
实例讲解Jquery中隐藏hide、显示show、切换toggle的用法
2016/05/13 Javascript
jquery实现轮播图效果
2017/02/13 Javascript
Three.js利用dat.GUI如何简化试验流程详解
2017/09/26 Javascript
Vue组件之全局组件与局部组件的使用详解
2017/10/09 Javascript
vue的传参方式汇总和router使用技巧
2018/05/22 Javascript
jquery实现的简单轮播图功能【适合新手】
2018/08/17 jQuery
在Vue中使用icon 字体图标的方法
2019/06/14 Javascript
详解nuxt 微信公众号支付遇到的问题与解决
2019/08/26 Javascript
python Django批量导入不重复数据
2016/03/25 Python
Python中的sort()方法使用基础教程
2017/01/08 Python
Python实现字符串反转的常用方法分析【4种方法】
2017/09/30 Python
基于python实现在excel中读取与生成随机数写入excel中
2018/01/04 Python
分析python动态规划的递归、非递归实现
2018/03/04 Python
python实现音乐下载的统计
2018/06/20 Python
python flask框架实现传数据到js的方法分析
2019/06/11 Python
python匿名函数用法实例分析
2019/08/03 Python
Django之路由层的实现
2019/09/09 Python
html5贪吃蛇游戏使用63行代码完美实现
2013/06/25 HTML / CSS
缓解脚、腿和背部疼痛:Z-CoiL鞋
2019/03/12 全球购物
PHP面试题附答案
2015/11/28 面试题
后勤副校长自我鉴定
2013/10/13 职场文书
应届生妇产科护士求职信
2013/10/27 职场文书
建国大业观后感600字
2015/06/01 职场文书
2015小学师德工作总结
2015/07/21 职场文书
2015中学教学工作总结
2015/07/22 职场文书
浅谈pytorch中stack和cat的及to_tensor的坑
2021/05/20 Python