2016-12-07 2 views
-1

Мне нужна помощь в сортировке списка по дате и времени, и дата, и время являются строковыми полями в моем списке.Сортировка списка, содержащего элементы даты и времени

myList = ['item1', 'item2', 'mm/dd/yy', 'hh:mmAM', 'item3'] 

Я использую Python 2.4.3.

Я использую CLI Bob Swift, чтобы вытащить информацию о странице из Confluence от Atlassian и поместить ее в список, чтобы затем ее сортировать, чтобы сначала отображать самые старые страницы.

Образец данных:

PageList = «[ 'Название страницы', '383551192', '298288254', 'dt206xxx', '1/7/16 1:05 вечера', 'dt206xxx',«1/7/16' , „1:16 Pm“, „2“, «http://xx.xxx.xx.xx:8xxx/display/mine/PageTitle»]»

мне нужно сортировать по дате последнего изменения в элементе 6 и времени на 7.

+1

Возможный дубликат [Сортировка списка строк даты] (http://stackoverflow.com/questions/17627531/sort-list-of-date-strings) – Kev1n91

+0

'item1' не похож на дату или время ... как вы хотите, чтобы это отсортировано? – qxz

+0

Из вашего 'myList' видно, что у вас есть список списков. Сорт Python стабилен. Сортировка дважды, сначала по времени, а затем по дате. – Marichyasana

ответ

0

Вы должны иметь ваши данные в списке списка, который, я думаю, вы, вероятно, делаете. Я изменил pageList, чтобы сделать это с каждым внутренним списком, имеющим другое время. Теперь мы можем использовать сортировку python(), но мы должны предоставить нашу собственную функцию сравнения. Итак, здесь у нас есть pageList.sort (mySort). Сортировка() передает два элемента списка для сравнения. Здесь каждый элемент является внутренним списком. Нам нужно объединить элементы 6 и 7, чтобы сформировать единую временную строку даты; затем преобразуйте его в datetime python, чтобы мы могли сравнить их.

Поскольку кортежи длинные, я распечатываю только даты и время из внутреннего списка после сортировки, чтобы показать, что он работает.

import datetime 

pageList =[['Page Title', '383551192', '298288254', 'dt206xxx', '1/7/16 1:05 PM', 'dt206xxx', '1/7/16', '1:56PM', '2', 'http://xx.xxx.xx.xx:8xxx/display/mine/PageTitle'], 
      ['Page Title', '383551192', '298288254', 'dt206xxx', '1/7/16 1:05 PM', 'dt206xxx', '1/7/16', '1:46PM', '2', 'http://xx.xxx.xx.xx:8xxx/display/mine/PageTitle'], 
      ['Page Title', '383551192', '298288254', 'dt206xxx', '1/7/16 1:05 PM', 'dt206xxx', '1/7/16', '1:56PM', '2', 'http://xx.xxx.xx.xx:8xxx/display/mine/PageTitle'], 
      ['Page Title', '383551192', '298288254', 'dt206xxx', '1/7/16 1:05 PM', 'dt206xxx', '1/7/16', '1:16PM', '2', 'http://xx.xxx.xx.xx:8xxx/display/mine/PageTitle'], 
      ['Page Title', '383551192', '298288254', 'dt206xxx', '1/7/16 1:05 PM', 'dt206xxx', '1/7/16', '1:36PM', '2', 'http://xx.xxx.xx.xx:8xxx/display/mine/PageTitle']] 

def mySort(a,b): 
    c = a[6] + ' ' + a[7] 
    d = b[6] + ' ' + b[7] 
    date1 = datetime.datetime.strptime(c, '%m/%d/%y %I:%M%p') 
    date2 = datetime.datetime.strptime(d, '%m/%d/%y %I:%M%p') 
    return cmp(date1, date2) 

if __name__ == '__main__': 
    pageList.sort(mySort) 
    for i in range(len(pageList)): 
     print i,pageList[i][6],' ',pageList[i][7] 

Выход:
0 1/7/16 1:16 вечера
1 1/7/16 1:36 вечера
2 1/7/16 1:46 вечера
3 1/7/16 13:56 PM
4 1/7/16 13:56 PM

+0

Получение следующей ошибки, угадывая ее из-за запуска старой версии Python, 2.4.3. –

+0

date1 = datetime.datetime.strptime (c, '% m /% d /% y% I:% M% p') AttributeError: type object 'datetime.datetime' не имеет атрибута 'strptime' –

+0

Я смог разрешить путем добавления: –

Смежные вопросы