对自定义类进行排序而不使用“key”参数?

2024-04-29

您可以对数组进行排序myclass通过使用key论证sorted功能:

sortedlist = sorted(myclasses, key=lambda obj: obj.myproperty)

有没有办法为我们的班级定义自然顺序?也许有一些神奇的方法可以让我们不必每次都传递密钥?

e.g.,

class myclass:
    def __init__(self,a,b):
        self.key1 = a
        self.key2 = b

    def __sortkey__(self):
        return self.key2

或者如果我们定义它自然会起作用__le__也许?


此外__cmp__,也可以用所谓的“丰富的比较运算符”来做到__eq__, __le__, __lt__, __gt__, and __ge__。您可以使用functools.total_ordering http://docs.python.org/library/functools.html#functools.total_ordering2.7+/3.1+ 中的类装饰器。__cmp__在 3.x 中消失了。

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

对自定义类进行排序而不使用“key”参数? 的相关文章

随机推荐

  • 对shinyTable进行子集化

    我目前正在玩shinyTable这是一个shinyHandsonTable 的兼容实现 https github com trestletech shinyTable https github com trestletech shinyTa
  • 有选择地中止通过 Extjs Direct 代理发送的 ajax 请求

    我有一个商店 它使用 Extjs 直接代理从列表中加载 w r t 项目 proxy type direct api read bomManagementAction bomQuickDetails 响应显示在网格面板中 如果选择的项目数量
  • 在 Chrome 中打印背景颜色

    我正在尝试在 Chrome 中打印 PHP 生成的文档 在浏览器上看起来不错链接到我要打印的页面 http www abbeysoft co uk adi 241 quote php但是我的打印机无法打印任何彩色背景 有人可以提供任何建议吗
  • 哪些用例需要 #define 而不使用令牌字符串?

    我遇到过 define预处理器指令之前在学习C时 然后在我读过的一些代码中也遇到过它 但除了使用它来明确替换常量和定义宏之外 我还没有真正理解它在没有 主体 或标记字符串的情况下使用的特殊情况 以这一行为例 define OCSTR X 就
  • ffmpeg创建RTP流

    我正在尝试使用 ffmpeg 进行编码和流式传输 libavcodec libavformat MSVC x64 with Zeranoe builds 这是我的代码 很大程度上改编自编码示例 删除了错误处理 include stdafx
  • GCM 条款和条件

    有谁知道在哪里可以找到有关哪些内容可以通过 GCM 通知发送以及哪些内容不可以发送的条款和条件 我似乎在任何地方都找不到任何文档 当您注册开设 Google API 帐户时 您会得到这些条款和条件 https developers goog
  • 包java.time不存在,jdk1.8

    嗯 我刚刚开始从事代号工作 我对 Java 有相当不错的经验 我的代码一切都很好 没有任何问题 但在编译时我得到了这个 error package java time does not exit import java time Local
  • 如何在同一个项目中连接两个数据库MySQL和MongoDB?是否可以?

    目前我正在使用 Hibernate MySQL 和 Spring 配置对我来说运行良好 但是一旦我配置了另一个配置 mongo config xml 文件并尝试使用 mongodb 运行测试用例 它就显示创建名为 的 bean 时出错从第一
  • EPERM:不允许操作,mkdir 'C:\Program Files\nodejs\node_modules\.staging

    我正在尝试在我的项目上运行 npm install 但它显示 EPERM 不允许操作 mkdir C Program Files nodejs node modules staging 我没有 root 管理访问权限 我在我的系统中以本地用
  • ? LIKE(列 || '%')

    我可以有这样的条件吗 SELECT FROM table WHERE LIKE column 哪里的 是一个字符串参数值 例如 这些参数值 当列等于时应返回 true admin products admin products 1 admi
  • Boto3 - 打印 AWS 实例平均 CPU 利用率

    我正在尝试仅打印 AWS 实例的平均 CPU 利用率 此代码将打印出 响应 但最后的 for 循环不会打印平均利用率 有人可以帮忙吗 先感谢您 import boto3 import sys from datetime import dat
  • 如何设置报表服务器实例?

    我正在尝试设置 Microsoft SQL Server Reporting Services 我打开 Reporting Services 配置管理器 它要求输入服务器名称 问题是 我不知道服务器名称 因为据我所知还没有设置报表服务器 那
  • 以编程方式创建进度绘制

    我有一个场景 我需要有大量的进度条可绘制对象 我无法为所有这些创建 xml 资源 因为我希望用户选择一种颜色 然后用于动态创建可绘制对象 下面是 xml 中的一个这样的可绘制对象 我如何以编程方式创建这个精确的可绘制对象
  • Mongoose 更新或插入许多文档

    我正在尝试使用最新版本的 mongoose 插入对象数组 或者更新相应的产品 ID 是否已存在 我一生都无法找出正确的使用方法 bulkWrite updateMany 等 而且我似乎无法在不出现错误的情况下找出语法 例如 我正在尝试 Pr
  • 在等式约束的情况下求解线性规划

    我问了一个问题 可以在这里找到 计算最优组合 https stackoverflow com questions 17232596 computing the optimal combination 并有人建议线性规划 我查阅了线性规划和单
  • 从以元组为键的字典中获取 pandas 数据框

    我是Python新手 并且已经在这个问题上挣扎了一段时间 我有一个这样的字典 dict1 a a 5 a b 10 a c 11 b a 4 b b 8 b c 3 我想做的是将其转换为 pandas 数据框 如下所示 a b c a 5
  • 无法在 Eclipselink 上合并日期

    我的会话 bean 不会对托管实体执行更新 我已经包含了相关类的代码 当我使用 prime faces 计划组件修改事件的日期字段并将修改后的实体传递给会话 bean 并调用 em merge event 时 实体管理器不会尝试更新实体 并
  • 使用文本框搜索 datagridview 中的列 (vb.net)

    如何使用文本框搜索 datagridview 中的列 我正在使用 vb net 2010 我有一个带有数据源的 Datagridview 下面是我用于填充 datagridview 的代码 网格视图将有 4 列 Private Sub Lo
  • 将 ddply + mutate 与自定义函数一起使用?

    I use ddply相当频繁 但历史上有summarize 偶尔mutate 并且只有基本功能 例如mean var1 var2等等 我有一个数据集 我试图在其中应用一个自定义的 更复杂的函数 并开始尝试深入研究如何做到这一点ddply
  • 对自定义类进行排序而不使用“key”参数?

    您可以对数组进行排序myclass通过使用key论证sorted功能 sortedlist sorted myclasses key lambda obj obj myproperty 有没有办法为我们的班级定义自然顺序 也许有一些神奇的方