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

kull

Новичок
Пользователь
Мар 7, 2022
4
0
1
Доброго времени суток! Как сортировать такой список:
Python:
a = ['1.text', '13.text', '2.text', '14.text', '3.text', '15.text', '4.text', '16.text', '5.text', '17.text', '6.text', '18.text', '7.text', '19.text', '8.text', '20.text', '9.text', '21.text', '10.text', '22.text', '11.text', '23.text', '12.text', '24.text']

text - это какое то слово, но начинается с цифры

На данный момент написал такой код:
Python:
def keyFunc(item):
    return item[1]

a = ['1.text', '13.text', '2.text', '14.text', '3.text', '15.text', '4.text', '16.text', '5.text', '17.text', '6.text', '18.text', '7.text', '19.text', '8.text', '20.text', '9.text', '21.text', '10.text', '22.text', '11.text', '23.text', '12.text', '24.text']

a.sort(key=keyFunc)

print(a)

Результат выполнения:
Python:
['1.text', '2.text', '3.text', '4.text', '5.text', '6.text', '7.text', '8.text', '9.text', '20.text', '10.text', '21.text', '11.text', '22.text', '12.text', '13.text', '23.text', '14.text', '24.text', '15.text', '16.text', '17.text', '18.text', '19.text']

До 9.text сортирует как надо, но потом пошло не по порядку. Как продолжить порядок сортировки?
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 589
459
83
так не понятно, чему равно икс??
Код:
a = ['1.text', '13.text', '2.text', '20.text', '10.text', '22.text', '11.text', '23.text', '12.text', '24.text']
a.sort(int(x.split('.')[0]))
print(a)
и как называется такая сортировка?
по порядку в сторону возрастания
так не понятно, чему равно икс??
каждому элементу из списка
Python:
def keyFunc(x):
    return int(x.split('.')[0])


a = ['1.text', '13.text', '2.text', '14.text', '3.text', '15.text', '4.text', '16.text', '5.text', '17.text', '6.text',
     '18.text', '7.text', '19.text', '8.text', '20.text', '9.text', '21.text', '10.text', '22.text', '11.text',
     '23.text', '12.text', '24.text']

a.sort(key=keyFunc)

print(a)
 

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
933
208
43
20
Москва
Python:
def key(x):
    return int(x.split('.')[0])
 

Ципихович Эндрю

Активный пользователь
Пользователь
Мар 27, 2021
490
25
28
извините не дошло
Код:
a = ['1.text', '13.text', '2.text', '20.text', '10.text', '22.text', '11.text', '23.text', '12.text', '24.text']
a.sort()
print(a)   # => ['1.text', '10.text', '11.text', '12.text', '13.text', '2.text', '20.text', '22.text', '23.text', '24.text']
как отсортировать, чтобы получить строго по порядку?
print(a)   # => ['1.text', '2.text', '10.text', '11.text', '12.text', '13.text', '20.text', '22.text', '23.text', '24.text']
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 589
459
83
извините не дошло
Код:
a = ['1.text', '13.text', '2.text', '20.text', '10.text', '22.text', '11.text', '23.text', '12.text', '24.text']
a.sort()
print(a)   # => ['1.text', '10.text', '11.text', '12.text', '13.text', '2.text', '20.text', '22.text', '23.text', '24.text']
как отсортировать, чтобы получить строго по порядку?
print(a)   # => ['1.text', '2.text', '10.text', '11.text', '12.text', '13.text', '20.text', '22.text', '23.text', '24.text']
реализацию функции keyFunc у тс'а сделать так, как предложил Vershitel sudeb
 

Ципихович Эндрю

Активный пользователь
Пользователь
Мар 27, 2021
490
25
28
сделать так, как предложил Vershitel sudeb
так не понятно, чему равно икс??
Код:
a = ['1.text', '13.text', '2.text', '20.text', '10.text', '22.text', '11.text', '23.text', '12.text', '24.text']
a.sort(int(x.split('.')[0]))
print(a)
и как называется такая сортировка?
 

Ципихович Эндрю

Активный пользователь
Пользователь
Мар 27, 2021
490
25
28
спасибо, а как это сделать без функции?
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 589
459
83
спасибо, а как это сделать без функции?
именно здесь никак, так как key в sort принимает только callable объект
 

Ципихович Эндрю

Активный пользователь
Пользователь
Мар 27, 2021
490
25
28
ясно, понял, спасибо
 

Ципихович Эндрю

Активный пользователь
Пользователь
Мар 27, 2021
490
25
28
по порядку в сторону возрастания
а тогда первая как называется?
['1.text', '10.text', '11.text', '12.text', '13.text', '2.text', '20.text', '22.text', '23.text']
эта, как? по алфавиту?
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 589
459
83
да
 

Форум IT Специалистов