这是清单:
[['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中执行此操作?
答案 0 :(得分:0)
您也可以使用
list = [['2017-11-09', 21], ['2017-11-14', 39], ['2017-11-13', 43], ['2017-11-10', 37]]
list.sort()
print(list)
答案 1 :(得分:0)
下面,
>>> 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]]
答案 2 :(得分:0)
您可以使用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))