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

时间:2018-01-25 09:40:54

标签: python sorting

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

如果未提供关键功能,对象的值是用sorted(lst)执行的?是散列还是一些id?

2 个答案:

答案 0 :(得分:7)

如果未提供密钥,则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))

我得到:

[10, 12, 44]

sort在内部使用了已定义的__lt__(小于)运算符,但不等于不优越。只能使用<运算符执行排序。

(评论__lt__运算符会导致TypeError: unorderable types: A() < A()

答案 1 :(得分:3)

Python padding: 60px

  

此方法仅使用&lt;对该列表进行排序。两者之间的比较   项目。如果有任何比较操作,则不会禁止例外   失败,整个排序操作将失败(列表可能会失败   处于部分修改状态)。

参考:list.sort()