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局部赋值的规则
Mar 07 Python
Python扫描IP段查看指定端口是否开放的方法
Jun 09 Python
快速解决PyCharm无法引用matplotlib的问题
May 24 Python
Python3 执行系统命令并获取实时回显功能
Jul 09 Python
pytorch 自定义数据集加载方法
Aug 18 Python
python多项式拟合之np.polyfit 和 np.polyld详解
Feb 18 Python
Django查询优化及ajax编码格式原理解析
Mar 25 Python
Python GUI编程学习笔记之tkinter控件的介绍及基本使用方法详解
Mar 30 Python
django修改models重建数据库的操作
Mar 31 Python
如何利用python检测图片是否包含二维码
Oct 15 Python
python中pyplot基础图标函数整理
Nov 10 Python
Python使用UDP实现720p视频传输的操作
Apr 24 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
虹吸式咖啡探讨–研磨
2021/03/03 冲泡冲煮
Win2003服务器安全加固设置--进一步提高服务器安全性
2007/05/23 PHP
php empty,isset,is_null判断比较(差异与异同)
2010/10/19 PHP
探讨php中遍历二维数组的几种方法详解
2013/06/08 PHP
is_uploaded_file函数引发的不能上传文件问题
2013/10/29 PHP
使用PHP实现阻止用户上传成人照片或者裸照
2014/12/25 PHP
php生成图片验证码的实例讲解
2015/08/03 PHP
js读取本地excel文档数据的代码
2010/11/11 Javascript
JavaScript获取客户端计算机硬件及系统等信息的方法
2014/01/02 Javascript
node.js中的fs.mkdir方法使用说明
2014/12/17 Javascript
js实现星星打分效果的方法
2020/07/05 Javascript
BootStrap Validator 版本差异问题导致的submitHandler失效问题的解决方法
2016/12/01 Javascript
JavaScript正则表达式exec/g实现多次循环用法示例
2017/01/17 Javascript
jQuery EasyUI Panel面板组件使用详解
2017/02/28 Javascript
Bootstrap表单制作代码
2017/03/17 Javascript
Vue实现点击后文字变色切换方法
2018/02/11 Javascript
vue 动态设置img的src地址无效,npm run build 后找不到文件的解决
2020/07/26 Javascript
js获取url页面id,也就是最后的数字文件名
2020/09/25 Javascript
使用Python设置tmpfs来加速项目的教程
2015/04/17 Python
Django返回json数据用法示例
2016/09/18 Python
python实现在函数中修改变量值的方法
2019/07/16 Python
Django admin 实现search_fields精确查询实例
2020/03/30 Python
利用CSS3实现毛玻璃效果示例源码
2016/09/25 HTML / CSS
css3 边框、背景、文本效果的实现代码
2018/03/21 HTML / CSS
简历自荐信
2013/12/02 职场文书
班主任经验交流会主持词
2014/04/01 职场文书
网上祭先烈心得体会
2014/09/01 职场文书
领导干部贪图享乐整改措施
2014/09/21 职场文书
乡镇机关党员民主评议表自我评价
2014/09/21 职场文书
设备收款委托书范本
2014/10/02 职场文书
乱丢垃圾袋检讨书
2014/10/08 职场文书
2014年技术员工作总结
2014/11/18 职场文书
工作表扬信
2015/01/17 职场文书
生活委员竞选稿
2015/11/21 职场文书
导游词之阆中古城
2019/12/23 职场文书
python某漫画app逆向
2021/03/31 Python