Python Glossary English

все Python 3Функциипонятие

sorted() с key=

функциональное

Возвращает новый отсортированный список. key= задаёт функцию для ключа сортировки. reverse= — обратный порядок.

Синтаксис

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

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

Примеры

words = ['banana', 'apple', 'cherry', 'kiwi']
print(sorted(words))  # → алфавит
print(sorted(words, key=len))  # → по длине
print(sorted(words, key=len, reverse=True))  # → ['banana', 'cherry', 'apple', 'kiwi']
# key=str.lower — регистронезависимо
mixed = ['Banana', 'apple', 'Cherry']
print(sorted(mixed, key=str.lower))  # → ['apple', 'Banana', 'Cherry']
# Сортировка кортежей
pairs = [(2,'b'),(1,'a'),(3,'c')]
print(sorted(pairs))  # → [(1,'a'),(2,'b'),(3,'c')]
print(sorted(pairs, key=lambda p: p[1]))  # → по буквам
# Словари по значению
d = {'a':3,'b':1,'c':2}
print(sorted(d, key=d.get))  # → ['b','c','a']
# Вторичный ключ: по убыванию оценки, при равенстве — по имени
students = [('Alice', 85), ('Bob', 90), ('Carol', 85)]
print(sorted(students, key=lambda s: (-s[1], s[0])))  # → [('Bob', 90), ('Alice', 85), ('Carol', 85)]
nums = [3, -1, 4, -1, 5, -9]
print(sorted(nums, key=abs))  # → [-1, -1, 3, 4, 5, -9]

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности