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的示例。出于教育目的,我希望对排序方法和项获取方法的效率进行比较。
同样,由于itemgetter方法的错误,itemgetter根本无法处理日期时间对象。
注意:我假设在此示例中,升序或降序并没有太大关系,因为可以使用来简单地对其进行翻转reverse=True
。
这应该工作。
print(sorted(li, key=lambda x: datetime.strptime(x[1], '%d/%m/%Y'), reverse=True))
您row
在可能已经定义过的lamba中使用了它,但是永远不会改变。
我没有itemgetter
在这里使用的方法。老实说,有一种方法,但是看起来并不好。
key_function = lambda x: datetime.strptime(itemgetter(1)(x), '%d/%m/%Y')
print(sorted(li, key=key_function, reverse=True))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句