Python重写排序说明

2024-09-30 02:34:29 发布

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

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

例如

accounts = [["paladin", "1", "1050"],
                ["archer",  "21", "995"],
                ["recruit", "3", "995"]]

按exp排序,如果exp相同,则按id排序。输出应为:

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

代码:

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

Tags: 代码nameselfidreturn排序defres

热门问题