如何按日期升序排列列表?

时间:2019-10-03 00:08:02

标签: python list sorting date

我有一个由两部分子列表组成的列表:

my_list = [["10/15/2018", "John"], ["10/12/2019", "Beth"], ["9/15/2018", "Cory"]]

我需要按日期升序排列并逐行打印的列表。

我知道list.sort()的顺序不正确。我尝试使用datetime.strptime,但无法将其与错误消息一起使用。

def display_by_date(list):

    list.sort(key=lambda x: 
      datetime.datetime.strptime(x['Created'], '%m %d %Y'))

      for entry in list:
        print(entry)

display_by_date(my_list)
  

TypeError:列表索引必须是整数或切片,而不是str

2 个答案:

答案 0 :(得分:2)

尝试使用sorted()指定一种key的类型

from datetime import datetime

my_list = [["10/15/2018", "John"], ["10/12/2019", "Beth"], ["9/15/2018", "Cory"]]

print(sorted(my_list, key=lambda x: datetime.strptime(x[0], '%m/%d/%Y')))
# [['9/15/2018', 'Cory'], ['10/15/2018', 'John'], ['10/12/2019', 'Beth']]

答案 1 :(得分:0)

尝试以下代码:

import pandas as pd

my_list = [["10/15/2018", "John"], ["10/12/2019", "Beth"], ["9/15/2018", "Cory"], ["10/11/2019", "Carl"]]

my_list.sort(key=lambda x: pd.to_datetime(x[0], format='%m/%d/%Y'))

并给出:

[['9/15/2018', 'Cory'],
 ['10/15/2018', 'John'],
 ['10/11/2019', 'Carl'],
 ['10/12/2019', 'Beth']]