使 python 用户定义的类可排序、可散列

2023-11-21

在 python 中使用户定义的类可排序和/或可散列时,需要重写/实现哪些方法?

有哪些需要注意的问题?

I type dir({})进入我的解释器以获取内置字典的方法列表。其中,我认为我需要实现一些子集

['__cmp__', '__eq__', '__ge__', '__gt__', '__hash__', '__le__', '__lt__', '__ne__']

Python3 与 Python2 必须实现哪些方法有区别吗?


我几乎将其发布为对其他答案的评论,但这本身就是一个答案。

为了让你的物品可以排序,他们只需要实现__lt__。这是内置排序使用的唯一方法。

其他比较或functools.total_ordering仅当您确实想在类中使用比较运算符时才需要。

为了使你的项目可散列,你实现__hash__正如其他人指出的那样。您还应该实施__eq__以兼容的方式——等效的项应该具有相同的哈希值。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使 python 用户定义的类可排序、可散列 的相关文章

随机推荐

  • 如何使用 Excel 将矩阵转换为单列

    我在 Excel 中有以下矩阵 3 栏 A B C Row 1 a b c Row 2 d e f Row 3 ghi 我需要的是包含所有这些值的一列 结果应该是这样的 a b c d e f g h i TRANSPOSE 函数不适用于这
  • 预取是由精确地址流还是由缓存行流触发?

    在现代 x86 CPU 上 硬件预取是一项重要技术 可在用户代码显式请求缓存行之前将其引入缓存层次结构的各个级别 The basic idea is that when the processor detects a series of a
  • Eudyptula 挑战和内核路径

    我决定采取桉树挑战 在我提交第一个任务后 即构建一个简单的 Hello World 模块 我收到以下答案 请阅读 Makefile 的要求并允许该模块 针对文件系统上的任何内核源代码树构建 而不仅仅是那些 碰巧安装的内核 lib 在某个时间
  • 有没有限制 mongodb 内存使用的选项?

    我使用的是 Mongo DBv1 8 1 我的服务器内存是 4GB 但 Mongo DB 使用的内存超过 3GB MongoDB 中有内存限制选项吗 如果你正在跑步MongoDB 3 2或更高版本 您可以限制wiredTiger cache
  • VSTO Word 激活功能区选项卡

    我的 Word vsto 插件中有以下ribbon xml
  • 如何播放 .wav 声音?

    我正在制作一个应用程序 我希望它在打开活动时发出声音 声音文件位于R raw sound file 如果有人可以编写一些示例代码来使我的应用程序播放声音 那就太好了 不是吗android media MediaPlayer类做这个吗 参考
  • 在 Dynamics CRM 中使用 OData 检索所有 OptionSet 值

    我对 Dynamics CRM 还很陌生 我正在构建一个应用程序 它应该更新 Dynamics CRM 中的实体 我可以毫无问题地更新简单类型 现在的情况是 我在联系人实体中声明了一些自定义选项集 有没有办法检索所有可能的 OptionSe
  • android:NeighboringCellInfo 始终为空!?为什么?

    我正在尝试获取有关我的手机可以 看到 自动取款机的邻近小区的信息 到目前为止 一切都很好 我这样做 telManager TelephonyManager context getSystemService Context TELEPHONY
  • Android 在特定日期通知

    我必须创建一个应用程序 我必须在其中设置一个日期 并且在该特定日期的 9 点钟位置 我必须发出通知 做到这一点最简单的方法是什么 我希望应用程序能够正常工作 即使应用程序被杀了 AlarmManager 是一个解决方案吗 要安排操作 您可以
  • 快速查找二维数组中的多个最大值

    情况如下 我有一个 2D numpy 数组 其形状为 1002 1004 每个元素包含一个介于 0 和 Inf 之间的值 我现在想要做的是确定前 1000 个最大值并将相应的索引存储到名为 x 的列表和名为 y 的列表中 这是因为我想绘制最
  • 单击链接时 JavaScript 添加类

    我有这些链接 a class active href section1 Link 1 a a href section2 Link 2 a 单击链接 2 时 我希望它接收活动类并从链接 1 本身中删除该类 这样它实际上会变成 a href
  • 自动调整 JTable 中的行高

    在 JTable 中 如何使某些行自动增加高度以显示其中完整的多行文本 这是目前的显示方式 我不想设置高度all行 但仅适用于具有多行文本的行 确定知道行高的唯一方法是渲染每个单元格以确定渲染的高度 在表中填充数据后 您可以执行以下操作 p
  • Emacs 和 conda 解决方法

    我正在使用 emacs 和 anaconda 我的 init el 中有这个 setenv WORKON HOME home user anaconda3 envs 和康达在我的道路上 added by Anaconda3 installe
  • mBluetoothGatt.getService(uuid) 返回 null

    在我的应用程序中 我传递了助听器服务的 UUID 编号 如 google 的 BLE 示例所示 即 0000a00 0000 1000 8000 00805f9b34fb 但是 getservice 返回 null 意味着该服务不受 Blu
  • android gridview中的水平滚动

    我的应用程序中有一个网格视图 我需要水平滚动它 我尝试将网格视图更改为图库 但是只有一行可用 但我需要与网格视图中不同的行 所以基本上我需要的是一个可以水平滚动的gridview 有没有有效的方法来做到这一点 提前致谢 问候 阿努 您好 感
  • Visual Studio 中的 gcc -Wall -pedantic -Wextra

    在 Linux 上 我使用这些标志来使用 gcc 进行编译 CFLAGS Wall pedantic g Wextra pthread 我在 VS 中可以选择哪些选项来启用类似的标志 额外警告等 您可以使用 Yd用于在所有目标文件中放置完整
  • 删除 Vim 中的重复行?

    我正在尝试使用 VIM 删除我创建的 XML 文件中的重复行 我无法重新创建该文件 因为 ID 号会更改 该文件看起来像这样
  • 仅当禁用 JavaScript 时才启用提交事件/提交按钮

    我在表单上进行了一些客户端 JavaScript 验证 效果很好 但我想适应禁用 JavaScript 的用户 我的验证不是从表单的 onsubmit 属性运行 它是绑定到表单中普通按钮的事件处理程序 因此 启动验证和提交的按钮实际上并不是
  • NoClassDefFoundError:Android 4.2.2 上的 android.support.design.internal.NavigationMenu (wiko)

    我正在尝试使用 Android 支持设计库 版本 23 0 1 和类NavigationMenu 我使用此类作为布局中的 XML 标记 当我在 Android 4 3 的 Samsung 或 Android 5 x 或 6 0 的 Nexu
  • 使 python 用户定义的类可排序、可散列

    在 python 中使用户定义的类可排序和 或可散列时 需要重写 实现哪些方法 有哪些需要注意的问题 I type dir 进入我的解释器以获取内置字典的方法列表 其中 我认为我需要实现一些子集 cmp eq ge gt hash le l