Как отсортировать список объектов на основе разных значений объектов в python?

У меня есть класс с несколькими разными значениями. Я хотел бы иметь возможность сортировать список этих объектов по различным значениям, но я не уверен, как это сделать. Я хотел бы иметь возможность сортировать их для любых значений и для обоих направлений (от наименьшего к наибольшему и наоборот).

Например, ниже приведен пример класса, а также список объектов-образцов:

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) 

Сортировка sampleObjects из каждого из значений объектов должно давать то, что ниже. Сортировка должна возвращать список объектов в указанном порядке (имена объектов используются ниже).

 value1: [C,D,A,B] value1 reversed: [B,A,D,C] value2: [A,C,D,B] value2 reversed: [B,D,C,A] 

Встроенная sorted функция Python имеет подпись:

 sorted(iterable[, cmp[, key[, reverse]]]) 

а также

key указывает функцию одного аргумента, которая используется для извлечения ключа сравнения из каждого элемента списка

Для вашего случая:

 >>> sorted(sampleObjects, key=lambda obj: obj.value1) [C, D, A, B] >>> sorted(sampleObjects, key=lambda obj: obj.value2) [A, C, D, B]