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