Я хочу отсортировать значение, которое начинается с chapter в списке, но я понятия не имею, как это реализовать.
мой список
["prologue", "chapter 1", "chapter 3", "chapter 2", "sick", "chapter 5", "chapter 4"]
ожидал
["prologue", "chapter 1", "chapter 2", "chapter 3", "sick", "chapter 4", "chapter 5"]
Отредактировано
What should the output look like if instead of 'chapter 2' you had 'chapter 22' in the same position in the list? – Lancelot du Lac
У меня пока нет этой проблемы. Но если да, то я хочу этот.
['prologue', 'chapter 1', 'chapter 3', 'sick', 'chapter 4', 'chapter 5', 'chapter 22']
используйте @mosc9575решение
но измените sorted() на natsorted()модуль
Результат будет
['prologue', 'chapter 1', 'chapter 3', 'chapter 4', 'sick', 'chapter 5', 'chapter 22']
Как должен выглядеть вывод, если вместо «глава 2» у вас будет «глава 22» на той же позиции в списке?






Вот одно решение, но я уверен, что есть намного больше.
my_list = ["prologue", "chapter 1", "chapter 3", "chapter 2", "sick", "chapter 5", "chapter 4"]
to_sort = []
to_sort_index = []
for i, item in enumerate(my_list):
if item.startswith('chapter'):
to_sort.append(item)
to_sort_index.append(i)
for i, item in zip(to_sort_index, sorted(to_sort)):
my_list [i] = item
Результат:
['prologue',
'chapter 1',
'chapter 2',
'chapter 3',
'sick',
'chapter 4',
'chapter 5']
Вы пробовали что-нибудь?