【问题标题】:How to sort a list by datetime in python?如何在python中按日期时间对列表进行排序?
【发布时间】:2019-09-10 15:01:09
【问题描述】:

我正在编写一个 .py 文件来按时间对列表进行排序,其中包含以下信息

日期、时间、emp_id、action_performed

stackoverflow 上有一个关于这个的问题,但我不能完全理解(我是 python 新手)

我还检查了排序功能和日期时间库,但无法正常工作。

list = 
[
('2017/09/10 13:19:38', 'employee_id', 'enrolled'),
('2017/09/10 12:15:21', 'employee_id', 'deleted'),
('2017/09/10 21:19:34', 'employee_id', 'enrolled'),
('2017/09/10 22:42:50', 'employee_id', 'deleted'),
('2017/09/10 16:53:03', 'employee_id', 'enrolled')
]

我只想知道首先执行了哪个操作。 有人可以帮我吗?

【问题讨论】:

  • 在您的情况下,使用这种日期格式(暗示 yyyy/mm/dd)就像简单的 list.sort() 一样可以完成任务。
  • 你尝试了什么?
  • 我还检查了排序功能和日期时间库,但无法正常工作 向我们展示您的尝试。如果您只是告诉我们您尝试了某项操作,而没有显示实际代码,我们无法指出您做错了什么。
  • 看在你的份上,不要覆盖内置的list。当您这样做时,您将无法再使用 list 函数。
  • 感谢您的回答。当我运行“print list.sort()”时,它返回“None”,我这样做对吗?

标签: python sorting python-datetime


【解决方案1】:
from datetime import datetime
list = 
[
('2017/09/10 13:19:38', 'employee_id', 'enrolled'),
('2017/09/10 12:15:21', 'employee_id', 'deleted'),
('2017/09/10 21:19:34', 'employee_id', 'enrolled'),
('2017/09/10 22:42:50', 'employee_id', 'deleted'),
('2017/09/10 16:53:03', 'employee_id', 'enrolled')
]
sorted_list = sorted(list, key=lambda t: datetime.strptime(t[0], '%Y/%m/%d %H:%M:%S'))

使用sorted 函数的key 参数,在这种情况下,它告诉函数将每个元组的第一个元素解析为格式为'%Y/%m/%d %H:%M:%S' 的日期时间字符串,并使用该值进行排序。

【讨论】:

    【解决方案2】:

    试试这个:

    sorted_list = sorted( list )
    

    =)

    【讨论】:

      【解决方案3】:

      在这种情况下,一个简单的 list.sort() 对列表进行就地排序,或者 sorted(list) 返回列表的排序副本 - 只要日期和时间遵循 Y/M/ D H/M/S.

      要在一行中获得第一个执行的操作,您可以使用:

      first_action = sorted(list)[0]
      

      【讨论】:

        猜你喜欢
        • 2022-01-24
        • 2019-09-25
        • 2019-03-12
        • 1970-01-01
        • 1970-01-01
        • 2012-04-23
        • 1970-01-01
        • 1970-01-01
        • 2021-12-21
        相关资源
        最近更新 更多