gpt4 book ai didi

python - 按日期排序(字符串和日期时间)

转载 作者:太空狗 更新时间:2023-10-30 00:50:15 24 4
gpt4 key购买 nike

import csv,operator
from datetime import datetime

li = [['name','01/03/2012','job'],
['name','02/05/2013','job'],
['name','03/08/2014','job']]

排序方法:

sorted(li,key=lambda x:datetime.strptime(row[1],'%d/%m/%Y'), reverse=True)

输出:

没有错误,只是没有排序

元素获取方法:

for x in range(1,len(li)):
li[x][6]=datetime.strptime(li[x][6],'%d/%m/%Y')

li.sort(key=operator.itemgetter(6))

输出:

Traceback (most recent call last):
File "U:/rmarshall/Work For Staff/ROB/_Python/__Python Projects Code/April Signed Terms.py", line 35, in <module>
li.sort(key=operator.itemgetter(6))
TypeError: unorderable types: datetime.datetime() < str()

有人可以提供一个按日期对列表 li 进行排序的示例。出于教育目的,我希望看到 sorted 方法和 itemgetter 方法的示例以及效率比较。

此外,由于 itemgetter 方法的错误,itemgetter 根本无法处理日期时间对象。

注意:我认为在这个例子中升序或降序并不重要,因为它可以简单地用 reverse=True 翻转。

最佳答案

这应该有效。

print(sorted(li, key=lambda x: datetime.strptime(x[1], '%d/%m/%Y'), reverse=True))

您在 lamba 中使用了 row,它可能以前已经定义过,但永远不会改变。

我在这里看不到使用 itemgetter 的方法。说实话,有办法,但是不太好。

key_function = lambda x: datetime.strptime(itemgetter(1)(x), '%d/%m/%Y') 
print(sorted(li, key=key_function, reverse=True))

关于python - 按日期排序(字符串和日期时间),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22859493/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com