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基于multiprocessing的多进程创建方法
Jun 04 Python
python3 与python2 异常处理的区别与联系
Jun 19 Python
分享python数据统计的一些小技巧
Jul 21 Python
Python PyQt5标准对话框用法示例
Aug 23 Python
python批量爬取下载抖音视频
Jun 17 Python
Python 使用指定的网卡发送HTTP请求的实例
Aug 21 Python
python3多线程知识点总结
Sep 26 Python
使用Python制作缩放自如的圣诞老人(圣诞树)
Dec 25 Python
opencv-python的RGB与BGR互转方式
Jun 02 Python
Python 多进程、多线程效率对比
Nov 19 Python
一文搞懂Python Sklearn库使用
Aug 23 Python
Python 数据可视化之Matplotlib详解
Nov 02 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中的preg_replace和代码执行
2018/08/15 PHP
Ajax+PHP实现的分类列表框功能示例
2019/02/11 PHP
PHP文件后缀不强制为.php方法
2019/03/31 PHP
JCalendar 日历控件 v1.0 beta[兼容IE&Firefox] 有文档和例子
2007/05/30 Javascript
Ext.MessageBox工具类简介
2009/12/10 Javascript
javascript smipleChart 简单图标类
2011/01/12 Javascript
AngularJs bootstrap搭载前台框架——基础页面
2016/09/01 Javascript
详解Angular的双向数据绑定(MV-VM)
2016/12/26 Javascript
详解基于electron制作一个node压缩图片的桌面应用
2019/01/29 Javascript
简单了解JavaScript sort方法
2019/11/25 Javascript
[01:12:27]EG vs Secret 2018国际邀请赛淘汰赛BO3 第二场 8.22
2018/08/23 DOTA
[54:58]完美世界DOTA2联赛PWL S2 LBZS vs Rebirth 第一场 11.25
2020/11/25 DOTA
Python中关键字is与==的区别简述
2014/07/31 Python
python实现按行切分文本文件的方法
2016/04/18 Python
12步入门Python中的decorator装饰器使用方法
2016/06/20 Python
Python set常用操作函数集锦
2017/11/15 Python
python实现flappy bird游戏
2018/12/24 Python
python 随机森林算法及其优化详解
2019/07/11 Python
pycharm配置当鼠标悬停时快速提示方法参数
2019/07/31 Python
用python打开摄像头并把图像传回qq邮箱(Pyinstaller打包)
2020/05/17 Python
Python Selenium操作Cookie的实例方法
2021/02/28 Python
你不知道的葡萄干处理法、橙蜜处理法、二氧化碳酵母法
2021/03/17 冲泡冲煮
英国复古和经典球衣网站:Vintage Football Shirts
2018/10/05 全球购物
恒华伟业笔试面试题
2015/02/26 面试题
学校经典推荐信
2013/10/30 职场文书
土木工程师岗位职责
2013/11/24 职场文书
初中音乐教学反思
2014/01/12 职场文书
运动会广播稿400字
2014/01/25 职场文书
留学推荐信范文
2014/05/10 职场文书
高三毕业评语
2014/12/31 职场文书
统计工作个人总结
2015/03/03 职场文书
先进个人自荐书
2015/03/06 职场文书
创业计划书之养殖业
2019/10/11 职场文书
golang判断key是否在map中的代码
2021/04/24 Golang
PyTorch 如何设置随机数种子使结果可复现
2021/05/12 Python
Java存储没有重复元素的数组
2022/04/29 Java/Android