Я знаю, что мне, вероятно, нужно каким-то образом извлечь числа, а затем отсортировать список, но я понятия не имею, как это сделать самым простым способом.
defatoi(text): returnint(text) if text.isdigit() else text
defnatural_keys(text): ''' alist.sort(key=natural_keys) sorts in human order http://nedbatchelder.com/blog/200712/human_sorting.html (See Toothy's implementation in the comments) ''' return [ atoi(c) for c in re.split(r'(\d+)', text) ]
PS. Я изменил свой ответ, чтобы использовать реализацию естественной сортировки от Toothy (опубликованную в комментариях здесь), поскольку это значительно быстрее, чем мой первоначальный ответ.
defnatural_keys(text): ''' alist.sort(key=natural_keys) sorts in human order http://nedbatchelder.com/blog/200712/human_sorting.html (See Toothy's implementation in the comments) float regex comes from https://pythonly.ru/a/12643073/190597 ''' return [ atof(c) for c in re.split(r'[+-]?([0-9]+(?:[.][0-9]*)?|[.][0-9]+)', text) ]