Python - сортировка списка - PullRequest
       1

Python - сортировка списка

0 голосов
/ 27 ноября 2018

У меня есть список в этом формате:

a = ["1.mp4", "10.mp4", "100.mp4", "2.mp4", "20.mp4", "200.mp4"]

Я должен отсортировать приведенный выше список в порядке возрастания.

Мой код:

def ascend(a):
    a.sort()
    return a

a = ["1.mp4", "10.mp4", "100.mp4", "2.mp4", "20.mp4", "200.mp4"]
print(ascend(a))

МойВывод:

['1.mp4', '10.mp4', '100.mp4', '2.mp4', '20.mp4', '200.mp4']

И фактический вывод должен быть

['1.mp4', '2.mp4', '10.mp4', '20.mp4', '100.mp4', '200.mp4']

Ответы [ 2 ]

0 голосов
/ 27 ноября 2018

Разделить на (.) И преобразовать в int

sorted(a, key=lambda x: int(x.split('.')[0]))
0 голосов
/ 27 ноября 2018

Проблема в том, что она сортируется лексикографически, а не численно, поэтому '10' < '2' в данном случае.Добавьте ключ сортировки:

>>> a = ["1.mp4", "10.mp4", "100.mp4", "2.mp4", "20.mp4", "200.mp4"]
>>> sorted(a, key=lambda x: int(x[:-4]))
['1.mp4', '2.mp4', '10.mp4', '20.mp4', '100.mp4', '200.mp4']

Параметр key принимает функцию, которая работает с каждым элементом a.Мы говорим Python отсортировать каждый элемент, сначала удалив .mp4 строки, затем преобразовав строку в целое число и выполнив числовую сортировку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...