Как отсортировать почти любой тип списка в Python

Сортировка списка в Python позволяет вам расположить его элементы в порядке возрастания или убывания.

Вместо того, чтобы писать для этого длинные блоки кода, Python имеет встроенный метод, который позволяет вам сортировать элементы в любом списке или массиве. Мы объясним, как это сделать, в этом посте.

Как отсортировать список в Python

Вы можете отсортировать элементы в списке или массиве с помощью метода Python sort () .

Метод sort () в Python принимает два необязательных аргумента, и его синтаксис выглядит следующим образом:

 list.sort(key = function, reverse = True/False)

По умолчанию метод sort () упорядочивает элементы списка в порядке возрастания:

 myList = ["C", "D", "B", "A", "F"]
myList.sort()
print(myList)
Output: ['A', 'B', 'C', 'D', 'F']

Вы можете использовать обратный аргумент для просмотра списка в порядке убывания:

 myList = ["C", "D", "B", "A", "F"]
myList.sort(reverse = True)
print(myList)
Output: ['F', 'D', 'C', 'B', 'A']

Вы также можете расположить элементы в списке по длине каждой строки.

Для этого создайте функцию и передайте ее в метод sort (), используя необязательный ключевой аргумент:

 myList = ["MUO", "Python", "JavaScript", "Sort", "Sortlists"]
def sortLength(item):
return len(item)
myList.sort(reverse = True, key = sortLength)
print(myList)
Output: ['JavaScript', 'Sortlists', 'Python', 'Sort', 'MUO']

Как отсортировать список словарей в Python

Вы также можете использовать метод sort () для сортировки списка словарей.

Давайте отсортируем задачи в приведенном ниже словаре по времени:

 myArray = [
{"Task": "Wash", "Time": 12.00},
{"Task":"Football", "Time": 24.00},
{"Task":"Sort", "Time": 17.00},
{"Task":"Code", "Time": 15.00}
]
def sortByTime(item):
return item["Time"]
myArray.sort(key = sortByTime)
print(myArray)

Поскольку значения времени являются целыми числами, приведенный выше блок кода перестраивает массив в зависимости от времени выполнения задачи.

Связанный: Как массивы и списки работают в Python

Помимо сортировки указанного выше массива по времени, вы также можете расположить его в алфавитном порядке, используя задачи, которые являются строками.

Чтобы отсортировать по строке в примере массива, вам нужно всего лишь изменить Time в квадратной скобке на Task :

 myArray = [
{"Task": "Wash", "Time": 12.00},
{"Task":"Football", "Time": 24.00},
{"Task":"Sort", "Time": 17.00},
{"Task":"Code", "Time": 15.00}
]
def sortByTime(item):
return item["Task"]
myArray.sort(key = sortByTime)
print(myArray)

Вы также можете отсортировать задачи в обратном порядке, установив для параметра reverse значение true:

 myArray.sort(key = sortByTime, reverse = True)

Вы также можете использовать лямбда-функцию с sort () для более чистого кода:

 myArray.sort(key = lambda getTime: getTime["Time"])
print(myArray)

Как отсортировать вложенный список Python

Вы можете отсортировать вложенный список кортежей по индексу каждого вложенного элемента в этом списке.

Например, в приведенном ниже коде третий элемент в каждом кортеже используется для сортировки списка в порядке возрастания:

 Alist = [(3, 19, 20), (2, 6, 0), (1, 8, 15), (7, 9, 3), (10, 19, 4)]
def sortByThirdIndex(a):
return a[2]
Alist.sort(key = sortByThirdIndex)
print(Alist)
Output: [(2, 6, 0), (7, 9, 3), (10, 19, 4), (1, 8, 15), (3, 19, 20)]

В выходных данных выше третий элемент в каждом кортеже последовательно увеличивается от нуля до двадцати.

Обратите внимание, что это не работает с набором Python, поскольку вы не можете его проиндексировать. Кроме того, каждое гнездо в списке должно принадлежать к одному и тому же типу данных.

Связанный: Что такое набор в Python и как его создать

Однако, чтобы расположить вывод в порядке убывания:

 Alist.sort(key = getIndex, reverse = True)
print(Alist)
Output: [(3, 19, 20), (1, 8, 15), (10, 19, 4), (7, 9, 3), (2, 6, 0)]

Посмотрим, как это выглядит и с лямбда- функцией:

 Alist = [(3, 19, 20), (2, 6, 0), (1, 8, 15), (7, 9, 3), (10, 19, 4)]
newList = sorted(Alist, key = lambda a: a[2])
print(newList)
Output: [(2, 6, 0), (7, 9, 3), (10, 19, 4), (1, 8, 15), (3, 19, 20)]

Как отсортировать список с помощью метода Sorted ()

В качестве альтернативы вы можете использовать метод sorted () .

Хотя он работает аналогично методу sort () , он создает новый отсортированный список без изменения оригинала. Его синтаксическая структура также немного отличается.

Синтаксис метода sorted () обычно выглядит следующим образом:

 sorted(list, key = function, reverse = True/False)

Итак, чтобы отсортировать список с помощью метода sorted () , вам необходимо создать новую переменную для отсортированного списка:

 Alist = [(3, 19, 20), (2, 6, 0), (1, 8, 15), (7, 9, 3), (10, 19, 4)]
def getIndex(a):
return a[2]
newList = sorted(Alist, key = getIndex)
print(newList)
Output: [(2, 6, 0), (7, 9, 3), (10, 19, 4), (1, 8, 15), (3, 19, 20)]

Метод sorted () также принимает лямбда- функцию в качестве ключа:

 Alist = [(3, 19, 20), (2, 6, 0), (1, 8, 15), (7, 9, 3), (10, 19, 4)]
newList = sorted(Alist, key = lambda a: a[2])
print(newList)
Output: [(2, 6, 0), (7, 9, 3), (10, 19, 4), (1, 8, 15), (3, 19, 20)]

Где можно применить сортировку списка?

Для эффективного программирования необходимо твердое владение методом сортировки Python. Он позволяет вам контролировать прохождение списка или массива, и вы всегда можете применить его в реальных проектах. Например, сортировка списка Python может пригодиться при перегруппировке данных из API или базы данных, чтобы она имела больше смысла для конечного пользователя.