我有一个列表,看起来像这样:
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']]
我一直试图按年份排序,然后按月计算。我使用
成功地按年分类sortedList = sorted(dateList, key = lambda x: int(x[0]))
然而,我无法想出一种方法可以按月对其进行排序,同时保持年份按升序排列。
答案 0 :(得分:5)
传递一个元组:
sorted(dateList, key = lambda x: (int(x[0]),int(x[1])))
但这看起来更好:
sorted(dateList, key = lambda x: tuple(map(int,x)))
另一种选择可能是使用:
import datetime
sorted(dateList, key = lambda x: datetime.datetime.strptime(''.join(x),'%Y%m'))
答案 1 :(得分:3)
您似乎需要对数据进行自然分类。您可以使用natsort
包执行此操作,而无需传递密钥 -
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']]