Сортировка списка Python по убыванию - PullRequest
303 голосов
/ 15 ноября 2010

Как мне отсортировать этот список в порядке убывания?

timestamp = [
    "2010-04-20 10:07:30",
    "2010-04-20 10:07:38",
    "2010-04-20 10:07:52",
    "2010-04-20 10:08:22",
    "2010-04-20 10:08:22",
    "2010-04-20 10:09:46",
    "2010-04-20 10:10:37",
    "2010-04-20 10:10:58",
    "2010-04-20 10:11:50",
    "2010-04-20 10:12:13",
    "2010-04-20 10:12:13",
    "2010-04-20 10:25:38"
]

Ответы [ 5 ]

352 голосов
/ 15 ноября 2010

В одной строке, используя lambda:

timestamp.sort(key=lambda x: time.strptime(x, '%Y-%m-%d %H:%M:%S')[0:6], reverse=True)

Передача функции в list.sort:

def foo(x):
    return time.strptime(x, '%Y-%m-%d %H:%M:%S')[0:6]

timestamp.sort(key=foo, reverse=True)
347 голосов
/ 15 ноября 2010

Это даст вам отсортированную версию массива.

sorted(timestamp, reverse=True)

Если вы хотите отсортировать на месте:

timestamp.sort(reverse=True)
50 голосов
/ 15 ноября 2010

Вы можете просто сделать это:

timestamp.sort(reverse=True)
7 голосов
/ 15 ноября 2010

Поскольку ваш список уже находится в порядке возрастания, мы можем просто перевернуть список.

>>> timestamp.reverse()
>>> timestamp
['2010-04-20 10:25:38', 
'2010-04-20 10:12:13', 
'2010-04-20 10:12:13', 
'2010-04-20 10:11:50', 
'2010-04-20 10:10:58', 
'2010-04-20 10:10:37', 
'2010-04-20 10:09:46', 
'2010-04-20 10:08:22',
'2010-04-20 10:08:22', 
'2010-04-20 10:07:52', 
'2010-04-20 10:07:38', 
'2010-04-20 10:07:30']
5 голосов
/ 18 декабря 2016

вы просто набираете:

timestamp.sort()
timestamp=timestamp[::-1]
...