我可以按 2 个键对对象列表进行排序吗?
Can I sort a list of objects by 2 keys?
我有以下 class(精简):
class DiskInstance(object):
def __init__(self, name, epoch, size)
self.name = name
self.epoch = epoch
self.size = size
然后我定义一个外部函数(在上面的class之外):
def getepoch(object):
return object.epoch
然后我实例化此 class 的几个对象并附加到名为 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)
我有以下 class(精简):
class DiskInstance(object):
def __init__(self, name, epoch, size)
self.name = name
self.epoch = epoch
self.size = size
然后我定义一个外部函数(在上面的class之外):
def getepoch(object):
return object.epoch
然后我实例化此 class 的几个对象并附加到名为 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)