#python #python-3.x #sorting #comparison
#python #python-3.x #сортировка #сравнение
Вопрос:
Я хочу определить компаратор как:
def cmp_smth(x, y):
if x == y:
return 0
elif fn(x, y):
return -1
else:
return 1
comparator = functools.cmp_to_key(cmp_smth)
И он отлично работает с cmp_to_key
конвертером, т.Е.:
sorted([x, y, z], key=comparator)
Но что, если я хочу отсортировать что-то более сложное, то есть кортежи:
sorted([(1, x), (2, y), (3, z)], key=???)
Как использовать мой глобальный компаратор в этом случае?
Ответ №1:
Вы можете использовать лямбда-выражение для сопоставления ключевой функции (ранее компаратора) со вторым элементом каждого кортежа:
sorted([(1, x), (2, y), (3, z)], key=lambda x: comparator(x[1]))