我有清单清单。我想根据日期对列表进行排序
list=[["rohit", "2004-10-01"],["rishu", "2004-10-05"],["gaurav", "2004-10-09"],["sony", "2004-10-03"],["zee", "2004-1-01"]]
我想根据日期对列表进行排序
答案 0 :(得分:0)
list.sort
函数可以使用参数key
,该参数指定如何计算用于对数组进行排序的键。您可以传入lambda表达式,以便选择内部列表的第二个元素来对list
进行排序。
示例 -
>>> lst = [[1,2],[3,4],[5,1]]
>>> lst.sort(key = lambda x: x[1])
>>> lst
[[5, 1], [1, 2], [3, 4]]
要按降序排序,请使用排序功能的reverse
参数并将其设置为True
。
示例 -
>>> lst = [[1,2],[3,4],[5,1]]
>>> lst.sort(key = lambda x: x[1], reverse=True)
>>> lst
[[3, 4], [1, 2], [5, 1]]
您还可以使用operator.itemgetter(1)
来获取内部列表的第二个元素进行排序,1
作为参数指示要选择的元素。
示例 -
>>> import operator
>>> lst = [[1,2],[3,4],[5,1]]
>>> lst.sort(key = operator.itemgetter(1))
>>> lst
[[5, 1], [1, 2], [3, 4]]
>>> lst.sort(key = operator.itemgetter(1) ,reverse=True) # descending order.
>>> lst
[[3, 4], [1, 2], [5, 1]]
答案 1 :(得分:0)
list=[["rohit", "2004-10-01"],["rishu", "2004-10-05"],["gaurav", "2004-10-09"],["sony", "2004-10-03"],["zee", "2004-1-01"]]
print list
from datetime import datetime
dt = datetime.strptime("2004-10-01", "%Y-%m-%d")
list.sort(key=lambda x:datetime.strptime(x[1], "%Y-%m-%d"))
print list
我假设年月日期格式您可以通过将“%Y-%m-%d”替换为“%Y-%d-%m”来更改格式,如果您遵循年份日期月份格式
答案 2 :(得分:0)
>>> import datetime
>>> a_list = [['rohit', '2004-10-01'],['rishu', '2004-10-05'],['gaurav', '2004-10-09'],['sony', '2004-10-03'],['zee', '2004-1-01']]
>>> sorted( a_list, key = lambda (x): datetime.datetime.strptime(x[1], '%Y-%m-%d').date() ) [['zee', '2004-1-01'], ['rohit', '2004-10-01'], ['sony', '2004-10-03'], ['rishu', '2004-10-05'], ['gaurav', '2004-10-09']]
datetime.datetime.strptime(x[1], '%Y-%m-%d').date() )
返回datetime.date
个对象。您可以对日期对象进行常规比较,例如
>>> d1 = datetime.datetime.strptime('2004-10-01', '%Y-%m-%d').date()
>>> d2 = datetime.datetime.strptime('2004-10-05', '%Y-%m-%d').date()
>>> d1 < d2
True