Конкретный сортировать список чисел, разделенных точками

У меня есть список:

L = ['1.1.1.', '1.1.10.', '1.1.11.', '1.1.12.', '1.1.13.', '1.1.2.', '1.1.3.', '1.1.4.'] 

Я хочу отсортировать его в следующем порядке:

 1.1.1. 1.1.2. 1.1.3. 1.1.4. 1.1.10. 1.1.11. 1.1.12. 1.1.13. 

Следующий метод не дает результата:

 L.sort(key=lambda s: int(re.search(r'.(\d+)',s).group(1))) 

2 Solutions collect form web for “Конкретный сортировать список чисел, разделенных точками”

Просто получите последнюю часть, преобразуйте ее в int и верните ее как ключ для сравнения

 print(sorted(L, key=lambda x: int(x.split(".")[2]))) 

Если вы хотите, чтобы все детали были рассмотрены , вы можете сделать это

 print(sorted(L, key=lambda x: [int(i) for i in x.rstrip(".").split(".")])) 

Он удаляет . в конце строк разбивает их на основе . и затем преобразует каждую его часть в int . Возвращаемый список будет использоваться для сравнения.

Вы можете больше узнать о том, как различные последовательности будут сравниваться с Python, здесь

Вывод

 ['1.1.1.','1.1.2.','1.1.3.','1.1.4.','1.1.10.','1.1.11.','1.1.12.','1.1.13.'] 

Если вам нужно отсортировать по всем цифрам, создайте последовательность целых чисел в ключевой функции:

 sorted(L, key=lambda v: [int(p) for p in v.split('.') if p.isdigit()]) 

Этот метод является надежным с точки зрения нецифровых значений между точками.

Демо-версия:

 >>> L = ['1.1.1.', '1.1.10.', '1.1.11.', '1.1.12.', '1.1.13.', '1.1.2.', '1.1.3.', '1.1.4.'] >>> sorted(L, key=lambda v: [int(p) for p in v.split('.') if p.isdigit()]) ['1.1.1.', '1.1.2.', '1.1.3.', '1.1.4.', '1.1.10.', '1.1.11.', '1.1.12.', '1.1.13.'] 

Ваша конкретная попытка возвращает только второй номер в списке, который для ваших данных образца всегда равен 1 .

  • Объединение двух отсортированных списков в Python
  • Как отсортировать список внутри dict в Python?
  • Как проверить, имеют ли перестановки равную четность?
  • Как написать вывод списка в текстовый файл в Python
  • Python - Строка в список
  • Python: цикл по списку строк и использование split ()
  • генератор питона генераторов?
  • Python: Разница между: = и "is not"
  • Python - лучший язык программирования в мире.