Python:不使用'key'参数对自定义类排序?

2024-09-29 21:55:08 发布

您现在位置:Python中文网/ 问答频道 /正文

通过对sorted函数使用key参数,可以对myclass数组进行排序:

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

有没有办法为我们的类定义一个自然顺序?也许是某种神奇的方法,这样我们就不用每次都交钥匙了?

例如

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

    def __sortkey__(self):
        return self.key2

或者,如果我们定义__le__的话,它自然会起作用吗?


Tags: lambdakey函数selfobj参数定义排序
3条回答

this previous question。答案是,只需使用__lt__,就可以逃脱惩罚,但最好使用^{}

除了__cmp__,您还可以使用所谓的“富比较运算符”__eq____le____lt____gt____ge__。您可以在2.7+/3.1+中使用^{}类装饰器,而不是定义所有的类。__cmp__在3.x中消失

我会重写^{}

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

    def __cmp__(self, other):
        return cmp(self.key2, other.key2)

相关问题 更多 >

    热门问题