sorted()

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

Сигнатура

sorted(iterable, /, *, key=None, reverse=False)

Параметры:

  • iterable — любой итерируемый объект.

  • key — функция одного аргумента, возвращающая ключ для сравнения (по умолчанию сравниваются сами элементы).

  • reverse — если True, сортировка идёт по убыванию.

Возвращает: новый список list.

Примеры

Простая сортировка чисел и строк:

print(sorted([5, 1, 4, 2, 3]))
print(sorted("python"))
[1, 2, 3, 4, 5]
['h', 'n', 'o', 'p', 't', 'y']

Сортировка по убыванию:

scores = [78, 92, 65, 100, 88]
print(sorted(scores, reverse=True))
[100, 92, 88, 78, 65]

Сортировка по длине слова через key:

words = ["алгоритм", "цикл", "переменная", "класс"]
print(sorted(words, key=len))
['цикл', 'класс', 'алгоритм', 'переменная']

Сортировка списка словарей по полю:

students = [
    {"name": "Айгуль", "score": 87},
    {"name": "Бахыт",  "score": 92},
    {"name": "Серик",  "score": 75},
]
top = sorted(students, key=lambda s: s["score"], reverse=True)
for s in top:
    print(s["name"], s["score"])
Бахыт 92
Айгуль 87
Серик 75

Стабильность сортировки — порядок равных элементов сохраняется:

data = [("a", 2), ("b", 1), ("c", 2), ("d", 1)]
print(sorted(data, key=lambda x: x[1]))
[('b', 1), ('d', 1), ('a', 2), ('c', 2)]

См. также

Примечание

Описание основано на официальной документации Python (docs.python.org), распространяемой под лицензией PSF License v2. © Python Software Foundation.