先按年份,然后按月份对列表进行排序

2024-04-16 04:07:20 发布

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

我有一个列表,看起来像这样:

dateList = [['2014', '4'], ['2015', '6'], ['2017', '6'], ['2016', '2'], ['2016', '3'], ['2017', '9'], ['2016', '6'], ['2017', '3'], ['2014', '8'], ['2014', '10'], ['2017', '10'], ['2014', '9'], ['2014', '3'], ['2015', '11'], ['2015', '2']]

我一直想先按年分类,再按月份分类。我已经成功地用

^{pr2}$

然而,我想不出一种方法,在以后的日子里,把年份按升序排列。在


Tags: 方法列表分类年份月份升序地用日子
2条回答

看起来你需要对你的数据进行自然排序。您可以使用^{}包来完成此操作,而不必传递密钥-

import natsort

natsort.natsorted(dateList)

[['2014', '3'],
 ['2014', '4'],
 ['2014', '8'],
 ['2014', '9'],
 ['2014', '10'],
 ['2015', '2'],
 ['2015', '6'],
 ['2015', '11'],
 ['2016', '2'],
 ['2016', '3'],
 ['2016', '6'],
 ['2017', '3'],
 ['2017', '6'],
 ['2017', '9'],
 ['2017', '10']]

传递元组:

sorted(dateList, key = lambda x: (int(x[0]),int(x[1])))

但这看起来更好:

^{pr2}$

另一种选择是使用:

import datetime 
sorted(dateList, key = lambda x: datetime.datetime.strptime(''.join(x),'%Y%m'))

相关问题 更多 >