Сообщить об ошибке.

Функция cmp_to_key() модуля functools в Python

Преобразовать функцию сравнения в ключевую функцию

Синтаксис:

import functools

functools.cmp_to_key(func)

Параметры:

Возвращаемое значение:

  • функция, используемая в качестве ключа сравнения.

Описание:

Класс cmp_to_key() модуля functools преобразует функцию сравнения старого стиля в ключевую функцию сравнения.

Используется с инструментами, которые принимают в качестве ключа сортировки функцию, такие как sorted(), min(), max(), heapq.nlargest(), heapq.nsmallest(), itertools.groupby(). Эта функция в основном используется в качестве инструмента перехода для программ, конвертируемых из Python 2.

Функция сравнения - это любой вызываемый объект, который принимает два аргумента, сравнивает их и возвращает отрицательное число для "меньше чем", ноль для равенства значений и положительное число для "больше чем". Функция, используемая в качестве ключа - это вызываемый объект, который принимает один аргумент и возвращает другое значение, которое будет использоваться в качестве ключа сортировки.

В Python 2.4 или более ранних версий, встроенной функции sorted() не было, а list.sort() не принимал аргументов с ключевыми словами. Вместо этого, все версии Py2.x поддерживали параметр cmp для обработки пользовательских функций сравнения.

В Py3.0 параметр cmp был полностью удален для упрощения и унификации языка, устраняя конфликт между богатыми сравнениями и магическим методом __cmp__().

В Py2.x сортировка допускает необязательную функцию, которую можно вызывать для сравнения. Эта функция должна принимать два аргумента для сравнения и затем возвращать отрицательное значение для "меньше чем", возвращать ноль, если они равны и возвращать положительное значение для "больше чем".

Примеры использования:

from functools import cmp_to_key
import locale

# locale-aware sort order
new_iterable = sorted(iterable, key=cmp_to_key(locale.strcoll))

Примеры сортировки смотрите в описании встроенной функции sorted().