Сортировочные списки, кортежи и словари
Хотя мы можем реализовать собственный алгоритм сортировки для сортировки элементов, использование встроенных функций может быть более эффективным. В 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. Надеюсь, это было полезно. Спасибо за прочтение.