如何在数组内执行双重排序?

Bru*_*uce 4 python sorting

我不知道这种排序的确切术语.这是问题 - 我有一堂课foo

class foo:
    def __init__(self,a1,a2):
        self.attrb1 = a1
        self.attrb2 = a2

    def sort(self):
        return self.attrb1 
Run Code Online (Sandbox Code Playgroud)

数组"bar"包含foo类型的对象.我想根据这两个属性按降序对数组进行排序.首先attrb1

bar.sort(key=foo.sort,reverse=True)
Run Code Online (Sandbox Code Playgroud)

然后我想根据自己对排序​​后的元素进行排序attrb2.因此,对于数组中的两个元素foo1和foo2,我们有 -

foo1 > foo2 
if foo1.attrb1 > foo2.attrb1
elif foo1.attrb1 == foo2.attrb1
foo1.attrb2 > foo2.attrb2
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

Sil*_*ost 7

bar.sort(key=lambda x: (x.attrb1, x.attrb2), reverse=True)
Run Code Online (Sandbox Code Playgroud)

而且你不需要定义 foo.sort