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

Возвращает новый отсортированный список, составленный из элементов итерирующегося объекта.

Параметры

  • iterable : Объект, поддерживающий итерирование, элементы которого требуется упорядочить.
  • cmp=None : Ожидается в форме именованного аргумента. Функция, принимающая аргументами два стоящих рядом элемента, которая должна вернуть отрицательное число (если первый меньше второго), нуль (если равны) и положительное (если первый больше второго). Например: cmp=lambda x,y: cmp(x.lower(), y.lower()). Использование сочетаний key + reverse намного быстрее эквивалентной cmp-функции из‑за того, что в первом случае обращение к каждому из элементов происходит единожды, а во втором по несколько раз.
  • key=None : Ожидается в форме именованного аргумента. Функция, принимающая аргументом элемент, используемая для получения из этого элемента значения для сравнения его с другими. None — сравнить элементы напрямую. Например: key=str.lower.
  • reverse=False : Ожидается в форме именованного аргумента. Флаг, указывающий следует ли производить сортировку в обратном порядке.

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

Функция sorted() возвращает отсортированный список.

Примеры

my_dict = {'a': 3, 'c': 1, 'b': 2}

# Упорядочим элементы словаря по ключам.
sorted(my_dict.items(), key=lambda item: item[0])  
# [('a', 3), ('b', 2), ('c', 1)]

# Упорядочим элементы словаря по значениям.
sorted(my_dict.items(), key=lambda item: item[1])  
# [('c', 1), ('b', 2), ('a', 3)]

my_dict = {'a': 3, 'c': 1, 'b': 2, '0': 3}

# Упорядочим по значениям и ключам.
sorted(my_dict.items(), key=lambda item: (item[1], item[0]))
# [('c', 1), ('b', 2), ('0', 3), ('a', 3)]

# А теперь по значениям по убыванию и ключам.
sorted(my_dict.items(), key=lambda item: (-item[1], item[0]))
# [('0', 3), ('a', 3), ('b', 2), ('c', 1)]

Сортировка при помощи данной функции является стабильной — гарантирует неизменность расположения равных между собой элементов. Такое поведение полезно при сортировке в несколько проходов (например, сортировка по отделу и уровню заработной платы).