Как отсортировать почти любой тип списка в 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)
Поскольку значения времени являются целыми числами, приведенный выше блок кода перестраивает массив в зависимости от времени выполнения задачи.
Помимо сортировки указанного выше массива по времени, вы также можете расположить его в алфавитном порядке, используя задачи, которые являются строками.
Чтобы отсортировать по строке в примере массива, вам нужно всего лишь изменить 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, поскольку вы не можете его проиндексировать. Кроме того, каждое гнездо в списке должно принадлежать к одному и тому же типу данных.
Однако, чтобы расположить вывод в порядке убывания:
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 или базы данных, чтобы она имела больше смысла для конечного пользователя.