在python中,如何根据不同的对象值对对象列表进行排序?
我有一个有几个不同值的类。我希望能够按不同的值对这些对象的列表进行排序,但我不确定如何进行排序。我希望能够为任意值和两个方向对它们进行排序(从最小到最大,反之亦然) 例如,下面是一个示例类,以及示例对象列表:在python中,如何根据不同的对象值对对象列表进行排序?,python,class,sorting,python-2.7,object,Python,Class,Sorting,Python 2.7,Object,我有一个有几个不同值的类。我希望能够按不同的值对这些对象的列表进行排序,但我不确定如何进行排序。我希望能够为任意值和两个方向对它们进行排序(从最小到最大,反之亦然) 例如,下面是一个示例类,以及示例对象列表: class Sample(object): def __init__(self, name, sampleValue1, sampleValue2): self.name self.value1 = sampleValue1 self
class Sample(object):
def __init__(self, name, sampleValue1, sampleValue2):
self.name
self.value1 = sampleValue1
self.value2 = sampleValue2
def __repr__(self):
return self.name
# creating sample objects for clarification
objectNames = ['A','B','C','D']
values1 = [3,4,1,2]
values2 = [1,4,2,3]
sampleObjects = list()
for i in xrange(4):
obj = Sample(objectNames[i], values1[i], values2[i])
sampleObjects.append(obj)
对每个对象值中的SampleObject进行排序应该会得到下面的结果。排序应按指定顺序返回对象列表(下面使用对象名称)
Python内置函数具有签名:
sorted(iterable[, cmp[, key[, reverse]]])
及
键指定一个参数的函数,该参数用于从每个列表元素中提取比较键
对于您的情况:
>>> sorted(sampleObjects, key=lambda obj: obj.value1)
[C, D, A, B]
>>> sorted(sampleObjects, key=lambda obj: obj.value2)
[A, C, D, B]
>>> sorted(sampleObjects, key=lambda obj: obj.value1)
[C, D, A, B]
>>> sorted(sampleObjects, key=lambda obj: obj.value2)
[A, C, D, B]