通过比较日期时间对列表排序

2024-05-16 11:46:16 发布

您现在位置:Python中文网/ 问答频道 /正文

有一个由时间和查询组成的列表,例如:

data = [['bbb', '2017-10-24 07:23:02'], 
        ['ccc', '2017-10-24 11:01:00'], 
        ['aaa', '2017-10-24 16:13:32']]

我想按时间分类。查询和时间都是字符串类型。我怎么能意识到呢?你知道吗

我把它转换成

[['aaa', 16,13,32],
 ['bbb', 7,23,2],
['ccc', 11,1,0],...] 

不管是哪一天,因为所有的日子都是一样的。你知道吗


Tags: 字符串类型列表data时间分类bbbccc
2条回答

<;、>;=等逻辑运算符是为datetime对象实现的。
因此,我建议将字符串转换为datetime对象,以便对它们进行排序:

from datetime import datetime

data = [
        ['aaa', '2017-10-24 16:13:32'],
        ['bbb', '2017-10-24 07:23:02'],
        ['ccc', '2017-10-24 11:01:00']
]


sorted_dates = sorted(data, key= lambda x: datetime.strptime(
                                            x[1], "%Y-%m-%d %H:%M:%S")
)

print(sorted_dates)

在这种情况下,排序也对字符串对应项起作用。不过,我想为任何感兴趣的人提供一个更规范的版本。你知道吗

来自pandas模块的^{}是大多数datetime相关操作的goto方法,因为它在猜测日期格式方面有多好。你知道吗

>>> import pandas as pd
>>> data = [['bbb', '2017-10-24 07:23:02'], 
            ['ccc', '2017-10-24 11:01:00'], 
            ['aaa', '2017-10-24 16:13:32']]  
>>> sorted(data, key=lambda x: pd.to_datetime(x[1]))

它给出:

[['bbb', '2017-10-24 07:23:02'], 
 ['ccc', '2017-10-24 11:01:00'], 
 ['aaa', '2017-10-24 16:13:32']]

您还可以使用内置的^{}来推断日期时间格式:

>>> import dateutil.parser
>>> sorted(data, key=lambda x: dateutil.parser.parse(x[1]))

结果是一样的。你知道吗


如果您陷入了不传递格式就无法转换的境地,请使用^{}并显式传递格式字符串。你知道吗

相关问题 更多 >