Сортировка строк в Python: встроенная функция natural sort

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Если вам требуется естественная сортировка строк в Python, рекомендуем использовать библиотеку natsort. Установить её можно при помощи команды pip install natsort. Затем вы можете применять функцию natsorted:

Python
Скопировать код
from natsort import natsorted

natural_sorted_list = natsorted(['item1', 'item12', 'item2'])
print(natural_sorted_list)  # ['item1', 'item2', 'item12']

С её помощью, числа в строках будут обрабатываться как целые, что позволит разместить их в логически корректном порядке.

Кинга Идем в IT: пошаговый план для смены профессии

Разбираемся со своими инструментами: natsort

Библиотека natsort значительно упрощает задачу сортировки строк, содержащих числа, делая этот процесс интуитивно понятным.

Пути к файлам и os_sorted

Функция os_sorted становится особенно полезной тогда, когда требуется отсортировать пути к файлам, аналогично тому, как это делает Проводник Windows:

Python
Скопировать код
from natsort import os_sorted

sorted_filepaths = os_sorted(['/path/to/File1', '/path/to/File12', '/path/to/File2'])
print(sorted_filepaths)  # ['/path/to/File1', '/path/to/File2', '/path/to/File12']

Таким образом, вы сможете отобразить список файлов в привычном для пользователей файловых менеджеров порядке.

Создание собственного порядка с помощью генераторов ключей

Если вас не устраивают стандартные настройки natsort, вам могут понравиться функции-генераторы ключей, например, natsort_keygen или os_sort_keygen. С их помощью можно настроить сортировку под ваши специфические нужды:

Python
Скопировать код
from natsort import natsort_keygen

keygen = natsort_keygen()
personalized_order = sorted(['a', 'b', '11', '2'], key=keygen)

Естественная сортировка без библиотек для пуритан программирования

Если вы предпочитаете работать с минимальным количеством сторонних зависимостей, возможно, вам будет интересно реализовать функцию естественной сортировки с использованием регулярных выражений:

Python
Скопировать код
import re

def make_natural(s):
    return [int(text) if text.isdigit() else text.lower() for text in re.split('(\d+)', s)]

sorted_list_without_lib = sorted(['item1', 'item12', 'item2'], key=make_natural)

Визуализация

Пример естественной сортировки строк с числами:

Markdown
Скопировать код
До: ["2 яблока", "10 яблок", "1 яблоко"]
После: ["1 яблоко", "2 яблока", "10 яблок"]

Числа интерпретируются как целые, что отражает их истинный порядок.

Раскрывая тайну работы 'natsort'

natsort работает по тщательно продуманной схеме, которая включает:

  • Разбиение строки на составляющие с числами и без них.
  • Преобразование числовых частей в целые числа для их последующего сравнения.
  • Упорядочивание отдельных частей в корректном порядке.

Такой подход помогает natsort эффективно и чётко сортировать строки.

Разбираемся со всем до мелочей

Для подробного изучения библиотеки и понимания её особенностей и возможных ограничений, рекомендуем ознакомиться с API natsort, в том числе с информацией о сортировке с учётом локали.

Полезные материалы

  1. Официальная документация Python о сортировке раскрывает все аспекты сортировки данных.
  2. Обсуждение функций естественной сортировки в Python на Stack Overflow.
  3. Руководство пользователя пакета natsort.
  4. Обзор и скачивание библиотеки natsort доступны на PyPI.
  5. Открытый исходный код и последние обновления библиотеки natsort на GitHub.
  6. Статья о естественном порядке сортировки на Википедии объясняет его суть и значение.
  7. Как мастерски работать со строками при помощи регулярных выражений Python.