如何在Python中对对象进行排序

And*_*unt 3 python sorting

假设我有lst一些对象的列表.

sorted(lst)如果未提供键功能,则使用什么值的对象?是散列还是一些id?

Jea*_*bre 8

当没有提供密钥时,sort仅使用<运算符,如下例所示:

class A:
    def __init__(self,a):
        self.a = a
    def __lt__(self,other):
        return self.a < other.a

    def __repr__(self):
        return str(self.a)

lst = [A(12),A(10),A(44)]
print(sorted(lst))
Run Code Online (Sandbox Code Playgroud)

在这里,我得到:

[10, 12, 44]
Run Code Online (Sandbox Code Playgroud)

sort内部使用定义的__lt__(小于)运算符,但不等于不优越.仅对操作<员执行排序.

(评论__lt__运营商导致TypeError: unorderable types: A() < A())