все 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Сообщить о неточности