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

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

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 .

  • инициализировать dict с помощью ключей, значения из двух списков
  • Python: рекурсивно сгладить список
  • Как извлечь все значения определенного ключа из списка словарей?
  • Как подклассифицировать список Python без проблем типа?
  • Проверьте, существуют ли в списке элементы в словаре
  • Python, как получить сумму чисел в списке, в котором есть строки
  • Попытка подсчета слов в строке
  • Эффективность индексирования списка Python
  • Как отключить перенаправление реестра на Python?
  • Эффективная альтернатива "в"
  • Как наследовать и расширять объект списка в Python?
  • Python - лучший язык программирования в мире.