Конечно, это не обязательно лямбда. Любая функция, которая передается, например, как показано ниже, будет работать
def numeric_compare(x, y):
if x > y:
return 1
elif x == y:
return 0
else: #x < y
return -1
a = [5, 2, 3, 1, 4]
a.sort(numeric_compare)
Источник: Python Sorting
Таким образом, в вашем случае ...
def object_compare(x, y):
if x.resultType > y.resultType:
return 1
elif x.resultType == y.resultType:
return 0
else: #x.resultType < y.resultType
return -1
a.sort(object_compare)
Вышеупомянутая лямбда, безусловно, самый компактный способ сделать это, но также используется operator.itemgetter.
import operator
#L = [('c', 2), ('d', 1), ('a', 4), ('b', 3)]
map(operator.itemgetter(0), L)
#['c', 'd', 'a', 'b']
map(operator.itemgetter(1), L)
#[2, 1, 4, 3]
sorted(L, key=operator.itemgetter(1))
#[('d', 1), ('c', 2), ('b', 3), ('a', 4)]
Таким образом, вы бы использовали itemgetter ('resultType'). (. Если предположить, GetItem определен)
sorted(L, key=operator.itemgetter('resultType'))
Вы ответили на два моих вопроса (attrgetter ..) и указали мне на что-то полезное. Благодаря! – Art
Ты помог мне понять, как сортировка отличается от сортировки! Спасибо – gl2748