我有以下类(class)(精简):

class DiskInstance(object):

    def __init__(self, name, epoch, size)
        self.name   = name
        self.epoch  = epoch
        self.size   = size

然后我定义了一个外部函数(在上面的类之外):
def getepoch(object):
    return object.epoch

然后我实例化这个类的几个对象并附加到一个名为 DISKIMAGES 的列表中。

我目前是这样排序的:
for image in sorted(DISKIMAGES, key=getedate, reverse=True):

有什么办法可以先按 getedate 再按大小排序?

感谢您的帮助。

最佳答案

如果你想按纪元排序,然后按大小排序,这应该有效:

sorted(DISKIMAGES, key=lambda x: (x.epoch, x.size), reverse=True)

或者正如@chepner 所指出的,您可以使用 operator.attrgetter 方法
import operator
sorted(DISKIMAGES, key=operator.attrgetter('epoch', 'size'), reverse=True)

关于python - 我可以按 2 个键对对象列表进行排序吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29678659/

10-12 19:10