Как эффективно определить пользовательский глобальный компаратор в Python 3? - PullRequest
0 голосов
/ 05 апреля 2019

Я хочу определить компаратор как:

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 Ответ

4 голосов
/ 05 апреля 2019

Вы можете использовать лямбду, чтобы сопоставить вашу ключевую функцию (ранее компаратор) со вторым элементом каждого кортежа:

sorted([(1, x), (2, y), (3, z)], key=lambda x: comparator(x[1]))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...