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

Python 按升序和降序对列表进行排序,python,Python,我有一份清单。我想按日期把清单排序 list=[["rohit", "2004-10-01"],["rishu", "2004-10-05"],["gaurav", "2004-10-09"],["sony", "2004-10-03"],["zee", "2004-1-01"]] 我想根据日期对列表进行排序。列表。sort函数可以使用参数key,该参数指定如何计算key来对数组进行排序。您可以传入lambda表达式,以便选择内部列表的第二个元素对列表进行排序 范例- >>>

我有一份清单。我想按日期把清单排序

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

我想根据日期对列表进行排序。
列表。sort
函数可以使用参数
key
,该参数指定如何计算key来对数组进行排序。您可以传入lambda表达式,以便选择内部列表的第二个元素对
列表进行排序

范例-

>>> lst = [[1,2],[3,4],[5,1]]
>>> lst.sort(key = lambda x: x[1])
>>> lst
[[5, 1], [1, 2], [3, 4]]
>>> lst = [[1,2],[3,4],[5,1]]
>>> lst.sort(key = lambda x: x[1], reverse=True)
>>> lst
[[3, 4], [1, 2], [5, 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]]
要按降序排序,请使用排序函数的
reverse
参数并将其设置为
True

范例-

>>> lst = [[1,2],[3,4],[5,1]]
>>> lst.sort(key = lambda x: x[1])
>>> lst
[[5, 1], [1, 2], [3, 4]]
>>> lst = [[1,2],[3,4],[5,1]]
>>> lst.sort(key = lambda x: x[1], reverse=True)
>>> lst
[[3, 4], [1, 2], [5, 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]]

您还可以使用
operator.itemgetter(1)
获取要排序的内部列表的第二个元素,
1
作为参数指示要选择的元素

范例-

>>> lst = [[1,2],[3,4],[5,1]]
>>> lst.sort(key = lambda x: x[1])
>>> lst
[[5, 1], [1, 2], [3, 4]]
>>> lst = [[1,2],[3,4],[5,1]]
>>> lst.sort(key = lambda x: x[1], reverse=True)
>>> lst
[[3, 4], [1, 2], [5, 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]]
我假设年-月日期格式如果您遵循年-月格式,则可以通过将“%Y-%m-%d”替换为“%Y-%d-%m”来更改格式

>>> 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.strtime(x[1],“%Y-%m-%d”).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
    
    >>>d1=datetime.datetime.strptime('2004-10-01',“%Y-%m-%d')。日期()
    >>>d2=datetime.datetime.StrTime('2004-10-05','%Y-%m-%d')。日期()
    >>>d1

首先,提供有效的Python。第二,先搜索。明白为什么取回date()部分比使用完整的date对象进行比较更重要吗?@k4vin没有具体原因,您也可以这样做。