2010-11-15 186 views
215

如何按降序對此列表進行排序?Python list按降序排序

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" 
] 

回答

264

在一個系列,採用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) 
+10

轉換爲時間元組是不必要的。 – 2010-11-15 10:48:16

+2

@馬塞洛:只有巧合。 – 2010-11-15 10:50:28

+10

@ IgnacioVazquez-Abrams不,不是巧合。明確設計ISO 8601是爲了使字母順序與時間順序一致。 – jwg 2015-10-08 08:32:34

249

這將給你一個排序版本的數組。

sorted(timestamp, reverse=True) 

如果你想就地排序:

timestamp.sort(reverse=True) 
+2

'2.4'中增加了'reverse'。但請注意'sort()'是穩定的,所以給出的兩位代碼不一定會給出相同的結果。 – 2010-11-15 10:49:55

+3

@Rajeev - 不要忘記,只有按照這種方式編寫日期(YYYY-MM-DD HH:MM:SS),才能按日期順序排列日期。 'DD.MM.YYYY'就是一個很好的例子,你需要的不僅僅是'sort(reverse = True)'。 – eumiro 2010-11-15 11:28:53

+0

print(「排序前的列表」); print(myList); myList.sort(reverse = True); print(「sortedList:」+ str(myList)); – Erum 2017-04-11 09:26:43

7

由於您的列表已經按升序排列,我們可以簡單地扭轉名單。

>>> 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'] 
34

你可以簡單地這樣做:

timestamp.sort(reverse=True) 
1

你簡單類型:

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