Потому что сортировка строк (например, имён файлов) - это
лексикографическое сравнение. В этом сравнении "б" > "аааааааааа", просто потому что "б" > "а". Другое дело, что у человеков очень странные представления о порядке, и компьютеру трудно к ним адаптироваться.
Если тебе нужен т.н. естественный порядок (
natural sorting), тебе нужно как-то выцепить из имени тот кусок, по которому нужно делать сравнение. Например, так:
import re
PARTS = re.compile(r'^(.+?)(?:(\d+)\D+)?$')
def natural_sort_key(fname: str):
"Функция извлекает из имени файла описание, по которому его надо сортировать."
prefix, index = PARTS.match(fname).groups()
return (prefix, int(index) if index else 0)
lst.sort(key=natural_sort_key)