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

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

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 .

  • Использование метода index () списка Python в списке кортежей или объектов?
  • Python Доступ к значениям в списке словарей
  • инициализация членов списка
  • Элементы группы списка с python размера шага?
  • Python Список словарей только Смотрите последний элемент
  • Сортировка списка Python в зависимости от длины строки
  • Сортировка подсписок элементов в списке, оставляющий остальное на месте
  • Объединение словарей списков в Python
  •  
    Interesting Posts for Van-Lav

    Какую клиентскую библиотеку Python я должен использовать для CouchdB?

    Python 3 – не копирующий интерфейс потока для bytearray?

    Как определить, является ли экземпляр класса из модели Django подклассом другой модели?

    Изменить версию Python по умолчанию с 2.4 до 2.6

    Невозможно импортировать имя из X в python

    Эффективно вычитает вектор из матрицы (Scipy)

    Django: применить ограничение «одного и того же родителя» к сопоставлению ManyToManyField для себя

    Получить индексы N наивысших значений в ndarray

    Используя BeautifulSoup, как защитить от элементов, которые не найдены?

    Значение по умолчанию / заполнение для * multi-key * внешних объединений

    Celery + Django: не удается запустить celerybeat в Windows 7

    Проект Эйлера 17

    Почему файлы Pickle в протоколе Pickle 4 в два раза больше, чем в протоколе 3 без каких-либо успехов?

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

    Почему синтаксис PyQt connect () настолько подробный?

    Python - лучший язык программирования в мире.