有一个由时间和查询组成的列表,例如:
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],...]
不管那一天,所有的日子都是一样的。
答案 0 :(得分:1)
在这种情况下,排序也适用于字符串对应项。但是,我想为任何感兴趣的人提供更规范的版本。
来自pandas
模块的 pd.to_datetime
是大多数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']]
您还可以使用内置dateutil.parser
来推断日期时间格式:
>>> import dateutil.parser
>>> sorted(data, key=lambda x: dateutil.parser.parse(x[1]))
这给出了相同的结果。
如果您在没有传递格式的情况下陷入无法转换的位置,请使用datetime.strptime
并明确传递格式字符串。
答案 1 :(得分:0)
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)