Python重写排序解释

Python重写排序解释,python,sorting,overriding,Python,Sorting,Overriding,下面的代码如何重写排序函数?我知道你可以使用\ugt\uuuu也可以只翻转操作符。我似乎无法理解它是如何对传递的对象列表进行排序的。它不是每个都返回真/假吗 比如说 accounts = [["paladin", "1", "1050"], ["archer", "21", "995"], ["recruit", "3", "995"]] 按exp排序,如果exp相同,则按id排序。输出应为: sortAccounts(acco

下面的代码如何重写排序函数?我知道你可以使用
\ugt\uuuu
也可以只翻转操作符。我似乎无法理解它是如何对传递的对象列表进行排序的。它不是每个都返回真/假吗

比如说

accounts = [["paladin", "1", "1050"],
                ["archer",  "21", "995"],
                ["recruit", "3", "995"]]
按exp排序,如果exp相同,则按id排序。输出应为:

sortAccounts(accounts) = ["paladin", "recruit", "archer"].
代码:

def排序计数(账户):
res=[账户(*账户)中的账户]
res.sort(反向=真)
返回列表(映射(str,res))
类别帐户(对象):
定义初始化(自我、姓名、id、xp):
self.name=名称
self.id=int(id)
self.xp=int(xp)
定义(自身、其他):
如果self.xp==other.xp else self.xpother.id
定义(自我):
返回self.name

不确定你在问什么。是,
返回True或False。排序函数使用这些信息进行排序:一个比另一个小的对象在列表中移动得更早。我想我只是对如何进行排序感到困惑。它是否像一次比较两个对象的气泡排序?实际的算法是这样的,但这并不重要。任何通用排序算法都必须通过比较元素对来工作;这是唯一的办法。不同排序算法之间的区别在于它们比较的元素和时间。
def sortAccounts(accounts):
        res = [Account(*account) for account in accounts]
        res.sort(reverse=True)
        return list(map(str, res))

class Account(object):
    def __init__(self, name, id, xp):
        self.name = name
        self.id = int(id)
        self.xp = int(xp)

    def __lt__(self, other):
        return self.id > other.id if self.xp == other.xp else self.xp < other.xp

    def __str__(self):
        return self.name