Сортировка с ключом (key function) в Python, как правило, используется с функциями sorted()
и методом .sort()
(списков) для определения логики сортировки, отличной от стандартного прямого сравнения элементов.
Основная идея: Вместо того, чтобы сравнивать непосредственно сами элементы списка, сортировка с ключом использует функцию, которая преобразует каждый элемент в значение, используемое для сравнения. Эта функция называется "ключом сортировки".
Как это работает:
sorted()
или .sort()
принимает необязательный аргумент key
. Этот аргумент принимает функцию (обычно lambda-функцию или заранее определенную функцию).key
.sorted()
) или изменяется (.sort()
) список, отсортированный на основе этих ключей.Преимущества:
Примеры:
1. Сортировка списка строк по длине:
words = ["apple", "banana", "kiwi", "orange"]
sorted_words = sorted(words, key=len) # ["kiwi", "apple", "banana", "orange"]
2. Сортировка списка чисел по абсолютному значению:
numbers = [-5, 2, -1, 0, 3]
sorted_numbers = sorted(numbers, key=abs) # [0, -1, 2, 3, -5]
3. Сортировка списка объектов по атрибуту:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
people = [Person("Alice", 30), Person("Bob", 25), Person("Charlie", 35)]
sorted_people = sorted(people, key=lambda person: person.age) # Сортировка по возрасту
# Результат: [Bob (25), Alice (30), Charlie (35)]
Важно помнить: Функция, передаваемая в аргумент key
, должна возвращать сравниваемые значения одного типа для всех элементов списка. Иначе, может возникнуть ошибка TypeError
.