Сортировать список имен, содержащих числа по числовому значению - PullRequest
0 голосов
/ 18 октября 2018

Я хотел бы отсортировать список, который включает в себя такой набор, как:

100.avi

10000.avi

10002.avi

1003.avi ....

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

Я пытался использовать [: -4], но я пытался сделать это в списке, а не в элементе списка.Потому что уже поздно, когда у меня есть стихия.Есть ли способ?

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 18 октября 2018

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

sorted(lst, key=lambda x: int(x[:-4]))
0 голосов
/ 18 октября 2018

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

>>> lst = ['100.avi', '10000.avi', '10002.avi', '1003.avi']
>>> sorted(lst, key=lambda x: int(x.split('.', 1)[0]))
['100.avi', '1003.avi', '10000.avi', '10002.avi']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...