【问题标题】:how to make sortable datatype in Python?如何在 Python 中制作可排序的数据类型?
【发布时间】:2011-06-05 13:05:47
【问题描述】:

我有一个类代表一些字段。当对此类的实例列表进行排序时,我希望它们按特定顺序排序(从每个实例中获取特定键)。我可以只做list.sort(key=Classname.sortKey) 并定义一个sortKey 方法,但我宁愿只做list.sort() 并让它解决。我想我可以通过覆盖__cmp__ 来做到这一点。但是,当我与不是我的数据类型的东西进行比较时,我该怎么办?我想像......

def __cmp__(self, o):
    if isinstance(o, MyClass):
        return cmp(self.sortKey(), o.sortKey())
    return object.__cmp__(self, o) ##**wrong

但那是可行的。我不在乎他们在异构列表中采用什么顺序。我只会返回0,但是对于任何x 而不是MyClass 的实例,MyClass(...) == x 这样的东西总是正确的。

【问题讨论】:

    标签: python sorting data-structures


    【解决方案1】:

    查看http://wiki.python.org/moin/HowTo/Sorting/

    您希望在您的类中覆盖 __lt__,以使内置的 sort 函数按照您描述的方式工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-11
      • 2021-08-20
      • 2016-05-20
      相关资源
      最近更新 更多