сортировать даты в массиве python

Как отсортировать нижний массив дат на python 2.4

timestamps = ['2011-06-2', '2011-08-05', '2011-02-04', '2010-1-14', '2010-12-13', '2010-1-12', '2010-2-11', '2010-2-07', '2010-12-02', '2011-11-30', '2010-11-26', '2010-11-23', '2010-11-22', '2010-11-16'] 

  • Замена одного символа строки в python
  • Как скопировать класс python?
  • Можно получить доступ к сайтам AppEngine SDK через локальный ip-адрес, когда localhost работает нормально и MacOSX
  • Модуль Python Cmd, проблема подкласса
  • Извлечение значений между двумя строками в текстовом файле с использованием python
  • не удалось использовать TfidfVectorizer в Google приложении
  • Python повышает значение SyntaxError на "=" в if statement
  • if statement в Python
  • Почему автозаполнение PyCharm не работает для библиотек, которые я устанавливаю?
  • Получение пути к импортируемому модулю
  • Список списков списков в python
  • Есть ли умный способ передать ключ default_factory defaultdict?
  • 6 Solutions collect form web for “сортировать даты в массиве python”

     sorted(timestamps, key=lambda d: map(int, d.split('-'))) 
     >>> import datetime >>> dates = [datetime.datetime.strptime(ts, "%Y-%m-%d") for ts in timestamps] >>> dates.sort() >>> sorteddates = [datetime.datetime.strftime(ts, "%Y-%m-%d") for ts in dates] >>> sorteddates ['2010-01-12', '2010-01-14', '2010-02-07', '2010-02-11', '2010-11-16', '2010-11- 22', '2010-11-23', '2010-11-26', '2010-12-02', '2010-12-13', '2011-02-04', '2011 -06-02', '2011-08-05', '2011-11-30'] 

    Просто так:

     timestamps.sort() 

    результат:

     ['2010-1-12', '2010-1-14', '2010-11-16', '2010-11-22', '2010-11-23', '2010-11-26', '2010-12-02', '2010-12-13', '2010-2-07', '2010-2-11', '2011-02-04', '2011-06-2', '2011-08-05', '2011-11-30'] 

    Порядок год-месяц-день позволяет такую ​​сортировку, потому что день меняется до месяца и месяца меняется до года, когда время проходит.

    Это похоже на число: цифра единства (самая правая цифра) изменяется до десяти цифр, а последняя изменяется до ста цифр, когда 1 постепенно добавляется.

    И есть факт, что sort () обрабатывает слева направо: если символы в одной точной позиции одинаковы в двух строках для сортировки, он будет проверять два символа в двух строках в следующей позиции, чтобы решить, какой из них логически предшествующий.

    Плюс тот факт, что '0' <'1'True , '1' <'2'True и т. Д.

     >>> import time >>> timestamps = ['2011-06-2', '2011-08-05', '2011-02-04', '2010-1-14', '2010-12-13', '2010-1-12', '2010-2-11', '2010-2-07', '2010-12-02', '2011-11-30', '2010-11-26', '2010-11-23', '2010-11-22', '2010-11-16'] >>> timestamps.sort(key=lambda x: time.mktime(time.strptime(x,"%Y-%m-%d"))) >>> timestamps ['2010-1-12', '2010-1-14', '2010-2-07', '2010-2-11', '2010-11-16', '2010-11-22', '2010-11-23', '2010-11-26', '2010-12-02', '2010-12-13', '2011-02-04', '2011-06-2', '2011-08-05', '2011-11-30'] 
     map(lambda x:x[1], sorted(map(lambda a:[map(int,a.split('-')),a], timestamps))) ['2010-1-12', '2010-1-14', '2010-2-07', '2010-2-11', '2010-11-16', '2010-11-22', '2010-11-23', '2010-11-26', '2010-12-02', '2010-12-13', '2011-02-04', '2011-06-2', '2011-08-05', '2011-11-30'] 

    Если вы отсортируете их в один формат, вы можете просто вызвать timestamps.sort()

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