按升序排列日期列表,不考虑其他元素

2024-03-29 01:41:25 发布

您现在位置:Python中文网/ 问答频道 /正文

以下是列表:

[['2017-11-09', 21], ['2017-11-14', 39], ['2017-11-13', 43], ['2017-11-10', 37]]

这必须是输出:

[['2017-11-09', 21], ['2017-11-10', 37], ['2017-11-13', 43], ['2017-11-14', 39]]

如何在Python中执行此操作?你知道吗


Tags: 列表
3条回答

您可以使用itemgetter获得更通用的解决方案。你知道吗

>>> from operator import itemgetter
>>> ls = [['2017-11-09', 21], ['2017-11-14', 39], ['2017-11-13', 43], ['2017-11-10', 37]]
>>> sorted(ls, key=itemgetter(0))

你也可以用这个

list = [['2017-11-09', 21], ['2017-11-14', 39], ['2017-11-13', 43], ['2017-11-10', 37]]
list.sort()
print(list)

在这里

>>> l
[['2017-11-09', 21], ['2017-11-14', 39], ['2017-11-13', 43], ['2017-11-10', 37], ['2017-11-09', 100], ['2017-11-09', 1]]

使用sorted对字符串排序,而不是对日期排序,还考虑子列表的所有项

>>> sorted(l) 
[['2017-11-09', 1], ['2017-11-09', 21], ['2017-11-09', 100], ['2017-11-10', 37], ['2017-11-13', 43], ['2017-11-14', 39]]

但是我们只需要考虑第一项(dateobject)

>>> sorted(l,key=lambda x:datetime.strptime(x[0],'%Y-%m-%d')) 
[['2017-11-09', 21], ['2017-11-09', 100], ['2017-11-09', 1], ['2017-11-10', 37], ['2017-11-13', 43], ['2017-11-14', 39]]

或者更简单

>>> from operator import itemgetter
>>> sorted(l,key=itemgetter(0))
[['2017-11-09', 21], ['2017-11-09', 100], ['2017-11-09', 1], ['2017-11-10', 37], ['2017-11-13', 43], ['2017-11-14', 39]]

相关问题 更多 >