Python列表降序排序

Posted

技术标签:

【中文标题】Python列表降序排序【英文标题】:Python list sort in descending order 【发布时间】:2011-05-10 04:04:48 【问题描述】:

如何按降序排列此列表?

timestamps = [
    "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"
]

【问题讨论】:

【参考方案1】:

这将为您提供数组的排序版本。

sorted(timestamps, reverse=True)

如果你想就地排序:

timestamps.sort(reverse=True)

查看Sorting HOW TO的文档

【讨论】:

reverse 是在 2.4 中添加的。但请注意,sort() 是稳定的,因此给出的两位代码不一定给出相同的结果。 @Rajeev - 不要忘记,只有以这种方式编写日期时才能对日期进行排序 (YYYY-MM-DD HH:MM:SS),其中字母顺序与时间顺序相同。 'DD.MM.YYYY' 就是一个很好的例子,你需要的不仅仅是sort(reverse=True) print("排序前的列表");打印(我的列表); myList.sort(reverse = True); print("sortedList : " + str(myList)); @Erum 这是一个答案,而不是评论,作为一个答案,它是多余的。【参考方案2】:

在一行中,使用lambda

timestamps.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]

timestamps.sort(key=foo, reverse=True)

【讨论】:

不需要转换成时间元组。 @Marcelo:纯属巧合。 @IgnacioVazquez-Abrams 不,不是巧合。 ISO 8601 被明确设计成字母顺序与时间顺序一致。 @jwg 同意这种观点(这显然是设计使然,并非巧合),但给定的格式不符合 ISO 8601。 @jwg 日期和时间组件之间有一个空格。【参考方案3】:

你可以这样做:

timestamps.sort(reverse=True)

【讨论】:

【参考方案4】:

你简单的类型:

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

【讨论】:

这是一个奇怪的答案,因为您在原地进行排序,然后在原地进行反转。如果有另一个变量为原始列表起别名,则其后的值将不会按原始顺序排列元素,也不会按降序排列;别名将指向按 升序 顺序排序的列表。这可能是相当令人惊讶的,也是微妙错误的来源。【参考方案5】:

由于您的列表已经按升序排列,我们可以简单地反转列表。

>>> timestamps.reverse()
>>> timestamps
['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']

【讨论】:

【参考方案6】:

这是另一种方式


timestamps.sort()
timestamps.reverse()
print(timestamps)

【讨论】:

从来不知道reverse(),超级有用

以上是关于Python列表降序排序的主要内容,如果未能解决你的问题,请参考以下文章

Python 二维列表,用sorted函数怎么多重排序?

python 字典排序

按特定键的降序对字典列表进行排序[重复]

python中列表排序,字典排序,列表中的字典排序

python:按子列表中的项目对列表列表进行排序[重复]

Python列表或字典排序指南(官方文档翻译)