Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Python: Python, sort, key function, lambda, sorted, custom sorting

Как работает сортировка в Python с использованием функции key?

Этот вопрос проверяет понимание механизма сортировки с параметром key в Python, который позволяет задавать произвольную функцию для определения порядка элементов.

Короткий ответ

Функции sorted() и метод list.sort() в Python принимают параметр key. Это функция, которая применяется к каждому элементу коллекции перед сравнением. Результат функции (ключ) используется для определения порядка сортировки, а исходные элементы остаются неизменными. Например, key=str.lower позволяет сортировать строки без учёта регистра. Это мощный инструмент для сложной сортировки по атрибутам объектов или вычисляемым значениям.

Длинный ответ

Сортировка с использованием параметра key — это фундаментальный механизм в Python, позволяющий гибко управлять порядком элементов в списках и других итерируемых объектах. Вместо того чтобы сравнивать сами элементы напрямую, интерпретатор Python применяет указанную функцию key к каждому элементу один раз, получая так называемый "ключ сортировки". Затем сортировка выполняется по этим ключам, используя стандартное сравнение (например, числовое или лексикографическое). Исходные элементы в итоговой коллекции остаются неизменными, меняется только их порядок.

Как и где это применяется

Этот подход применяется повсеместно, когда стандартного сравнения элементов недостаточно. Типичные сценарии включают:

  • Сортировка строк без учёта регистра.
  • Сортировка сложных объектов (например, экземпляров классов) по определённому атрибуту (например, по возрасту пользователя).
  • Сортировка по нескольким критериям (часто в комбинации с параметром reverse или путём возврата кортежа из функции key).
  • Сортировка по преобразованному значению, например, по длине строки или по абсолютному значению числа.

Практические примеры кода

Рассмотрим несколько примеров, демонстрирующих мощь параметра key.

# Пример 1: Сортировка строк без учёта регистра
fruits = ["Banana", "apple", "Cherry", "date"]
sorted_fruits = sorted(fruits, key=str.lower)
print(sorted_fruits)  # ['apple', 'Banana', 'Cherry', 'date']

# Пример 2: Сортировка списка кортежей по второму элементу
students = [("Alice", 25), ("Bob", 20), ("Charlie", 23)]
sorted_by_age = sorted(students, key=lambda student: student[1])
print(sorted_by_age)  # [('Bob', 20), ('Charlie', 23), ('Alice', 25)]

# Пример 3: Сортировка объектов по атрибуту
class Product:
    def __init__(self, name, price):
        self.name = name
        self.price = price
    def __repr__(self):
        return f"{self.name}: ${self.price}"

products = [Product("Laptop", 1200), Product("Mouse", 25), Product("Keyboard", 80)]
sorted_products = sorted(products, key=lambda p: p.price)
print(sorted_products)  # [Mouse: $25, Keyboard: $80, Laptop: $1200]

# Пример 4: Сложная сортировка по нескольким критериям через кортеж
# Сначала по длине строки, затем по алфавиту
words = ["fig", "apple", "banana", "date", "elderberry"]
sorted_words = sorted(words, key=lambda w: (len(w), w))
print(sorted_words)  # ['fig', 'date', 'apple', 'banana', 'elderberry']

Важно помнить, что функция, передаваемая в key, должна быть вызываемой (callable) и принимать ровно один аргумент — текущий элемент коллекции. Часто для краткости используют lambda-функции, но можно передавать и обычные функции, определённые через def, или даже встроенные, такие как str.lower или abs.

Вывод: Используйте параметр key при сортировке в Python, когда необходимо упорядочить элементы не по их естественному значению, а по какому-либо производному признаку, атрибуту или комбинации критериев. Это делает код чистым, эффективным и легко читаемым, избавляя от необходимости писать сложные функции сравнения.

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    4

  • Сложность:

    3

Навыки

  • Python

    Python

Ключевые слова

#Python

#sort

#key function

#lambda

#sorted

#custom sorting

Подпишись на Python Developer в телеграм

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.