代码之家  ›  专栏  ›  技术社区  ›  david

如何用字符串表示的日期时间对字典进行正确排序?

  •  -3
  • david  · 技术社区  · 6 年前
    list =
    [{'name':'test1', 'start_time': '05-24-2015, 05:47 PM'},
    {'name':'test2', 'start_time': '04-24-2018, 02:23 PM'},
    {'name':'test3', 'start_time': '06-23-2018, 01:41 PM'}]
    

    我尝试过下面的解决方案,但忽略了有意义的年份。我想在排序之前我需要删除破折号、空格和逗号?

    list = sorted(list, k['time_start'], reverse=True)
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   abarnert    6 年前

    05-24-2015 在后面 04-24-2018

    YYYY-MM-DD

    strptime 函数是实现它的最简单方法(没有类似的第三方库 dateutil

    k['time_start'] k 值并返回相应的排序键。你可以直接用 lambda def

    也, time_start start_time key 排序函数的参数仅在python 3.x中是关键字。

    import datetime
    
    def our_key(d):
        return datetime.datetime.strptime(d['start_time'], '%m-%d-%Y, %I:%M %p')
    

    list = sorted(list, key=our_key, reverse=True)
    

    当我们在做的时候,还有一些事情:

    • list
    • 如果您想在适当的位置对一个列表进行排序,只需调用 sort