如何在Python中制作可排序的数据类型?

Cla*_*diu 9 python sorting data-structures

我有一个代表一些领域的类.当对这个类的实例列表进行排序时,我希望它们按特定顺序排序(从每个类中获取一个特定的键).我可以做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
Run Code Online (Sandbox Code Playgroud)

但这反过来有效.我不在乎他们在异构列表中采取什么排序.我会回来,0但那样的东西MyClass(...) == x总是如此,因为任何x不是实例MyClass.

And*_*ark 12

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

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