按升序和降序对列表进行排序

时间:2015-06-24 04:10:15

标签: python

我有清单清单。我想根据日期对列表进行排序

list=[["rohit", "2004-10-01"],["rishu", "2004-10-05"],["gaurav", "2004-10-09"],["sony", "2004-10-03"],["zee", "2004-1-01"]]

我想根据日期对列表进行排序

3 个答案:

答案 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