Сортировочные списки, кортежи и словари

Хотя мы можем реализовать собственный алгоритм сортировки для сортировки элементов, использование встроенных функций может быть более эффективным. В Python у нас есть метод sort() и функция sorted() для сортировки. sort() работает только для списков сортировки. sorted() функция более универсальна, так как мы можем использовать ее для сортировки других типов данных и объектов. Сегодня мы увидим, как сортировать списки, кортежи и словари с помощью функции sorted().

Сортировка списков

Чтобы отсортировать список, мы можем использовать метод sort() или функцию sorted(). Метод sort() сортирует список на месте. Это означает, что sort() изменит исходный список и вернет None. С другой стороны, функция sorted() вернет отсортированный список, но не изменит исходный список. Поясним это на примере.

Выход:

[1, 2, 3, 4, 5, 6, 7, 8, 9]

Здесь lst[] сортируется на месте с помощью метода sort(). Теперь отсортируем список с помощью функции sorted().

Выход:

Sorted list: [1, 2, 3, 4, 5, 6, 7, 8, 9]
Original list: [9, 2, 1, 6, 4, 5, 7, 8, 3]

sorted() возвращает новый отсортированный список. Но исходный список остался без изменений. Обратите внимание, что sort() возвращает None.

Выход:

None

Сортировка по убыванию

По умолчанию sorted() сортируется по возрастанию. Для сортировки по убыванию необходимо установить reverse=True.

Выход:

[9, 8, 7, 6, 5, 4, 3, 2, 1]

Сортировка кортежей

Сортировка кортежей аналогична сортировке списков. Мы не можем сортировать кортежи с помощью sort(). Нам нужно использовать sorted().

Это будет через AttributeError:

AttributeError: ‘tuple’ object has no attribute ‘sort’

sorted() будет работать.

Выход:

[1, 2, 3, 4, 5, 6, 7, 8, 9]

Следует помнить, что sorted() всегда возвращает список. Если мы проверим тип sorted_tup, мы увидим, что это список.

Выход:

<class ‘list’>

Но обычно ожидается, что при сортировке кортежа мы хотим получить кортеж в качестве результата. Мы можем преобразовать sorted_tup в такой кортеж -

Выход:

<class ‘tuple’>
(1, 2, 3, 4, 5, 6, 7, 8, 9)

reverse() также будет работать с кортежами.

Выход:

(9, 8, 7, 6, 5, 4, 3, 2, 1)

Сортировка словарей

Мы храним данные в паре ключ-значение с помощью словарей. Каждое значение связано с ключом. Мы получаем доступ к значению по его ключу. Таким образом, данные в словарях не упорядочены. Но мы также можем сортировать словари, если это необходимо. По умолчанию функция sorted() сортирует словарь по ключам.

Выход:

[‘Harry’, ‘John’, ‘Ron’, ‘Tom’]

Здесь у нас есть словарь dct, где ключи - это имена, а значения - это возрасты. Если нам тоже нужны значения, мы можем использовать dct.items().

Выход:

[(‘Harry’, 23), (‘John’, 13), (‘Ron’, 87), (‘Tom’, 33)]

Теперь предположим, что нам нужно отсортировать словарь по возрасту. Мы можем сделать это с помощью key.

Выход:

[(‘John’, 13), (‘Harry’, 23), (‘Tom’, 33), (‘Ron’, 87)]

Здесь мы получаем доступ ко вторым значениям с помощью lambda и сортируем словарь по ним. Здесь x[1] обозначает возраст, x[0] - имена.

Выход:

[(‘Harry’, 23), (‘John’, 13), (‘Ron’, 87), (‘Tom’, 33)]

Таким образом, использование x[0] будет делать то же самое, если мы ничего не используем.

Используя key, мы можем добавить нашу собственную логику того, в каком порядке мы хотим сортировать. Так что это очень полезная функция. Таким образом мы можем сортировать и наши собственные объекты.

Здесь у вас есть краткий обзор того, как сортировать различные типы данных в Python. Надеюсь, это было полезно. Спасибо за прочтение.

Ресурсы: