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

 更新时间:2018年01月24日 15:42:02   作者:廖Sir  
这篇文章主要介绍了python中的set实现不重复的排序原理,需要的朋友可以参考下

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

  1、存在两个类 School、Teacher ;

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

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

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

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

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

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

  综上发现:

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

总结

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

相关文章

  • Pytorch mask_select 函数的用法详解

    Pytorch mask_select 函数的用法详解

    今天小编就为大家分享一篇Pytorch mask_select 函数的用法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • 从列表或字典创建Pandas的DataFrame对象的方法

    从列表或字典创建Pandas的DataFrame对象的方法

    这篇文章主要介绍了从列表或字典创建Pandas的DataFrame对象的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • python之如何复制excel模板并保留表格样式

    python之如何复制excel模板并保留表格样式

    这篇文章主要介绍了python之如何复制excel模板并保留表格样式问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • Python进阶学习修改闭包内使用的外部变量

    Python进阶学习修改闭包内使用的外部变量

    这篇文章主要为大家介绍了Python进阶学习修改闭包内使用的外部变量实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • Django实现将一个字典传到前端显示出来

    Django实现将一个字典传到前端显示出来

    这篇文章主要介绍了Django实现将一个字典传到前端显示出来,具有很好的参考价值,希望
    2020-04-04
  • Python使用Joblib模块实现加快任务处理速度

    Python使用Joblib模块实现加快任务处理速度

    在Python编程中,处理大规模数据或者进行复杂的计算任务时,通常需要考虑如何提高程序的运行效率,本文主要介绍了如何使用Joblib模块来加快任务处理速度,需要的可以参考下
    2024-03-03
  • pytorch在fintune时将sequential中的层输出方法,以vgg为例

    pytorch在fintune时将sequential中的层输出方法,以vgg为例

    今天小编就为大家分享一篇pytorch在fintune时将sequential中的层输出方法,以vgg为例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • 使用Pandas的ExcelWriter操作excel的方法

    使用Pandas的ExcelWriter操作excel的方法

    这篇文章主要介绍了使用Pandas的ExcelWriter操作excel的方法,ExcelWriter这个插件有个坑,就是已经设置好的格式是无法更改的,因此,由pandas转成excel的时候,必须将格式清除,尤其是表头的格式需要大家多多注意,本文结合示例代码讲解的非常详细,需要的朋友参考下吧
    2023-11-11
  • 用Python实现KNN分类算法

    用Python实现KNN分类算法

    这篇文章主要为大家详细介绍了用Python实现KNN分类算法的相关资料,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • 关于numpy.polyfit()与Stats.linregress()方法最小二乘近似拟合斜率对比

    关于numpy.polyfit()与Stats.linregress()方法最小二乘近似拟合斜率对比

    这篇文章主要介绍了关于numpy.polyfit()与Stats.linregress()方法最小二乘近似拟合斜率对比,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-04-04

最新评论