在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]