我在python中有一个列表,其名称是创建日期的目录;
import os
ConfigDir = "C:/Config-Archive/"
for root, dirs, files in os.walk(ConfigDir):
if len(dirs) == 0: # This directory has no subfolder
ConfigListDir = root + "/../" # Step back up one directory
ConfigList = os.listdir(ConfigListDir)
print(ConfigList)
['01-02-2014', '01-03-2014', '01-08-2013', '01-09-2013', '01-10-2013']
我想要最新的目录,即该示例是01-03-2014
,列表中的第二个目录。日期是DD-MM-YYYY。
可以使用lamba排序键对其进行排序,还是应该尝试使用简单的排序函数?
答案 0 :(得分:7)
您要在排序键中解析日期:
from datetime import datetime
sorted(ConfigList, key=lambda d: datetime.strptime(d, '%d-%m-%Y'))
演示:
>>> from datetime import datetime
>>> ConfigList = ['01-02-2014', '01-03-2014', '01-08-2013', '01-09-2013', '01-10-2013']
>>> sorted(ConfigList, key=lambda d: datetime.strptime(d, '%d-%m-%Y'))
['01-08-2013', '01-09-2013', '01-10-2013', '01-02-2014', '01-03-2014']
答案 1 :(得分:1)
sorted
将返回原始列表的副本。
如果要对同一对象中的数据进行排序,可以使用list.sort
方法进行排序。
In [1]: from datetime import datetime
In [2]: ConfigList = ['01-02-2014', '01-03-2014', '01-08-2013', '01-09-2013', '01-10-2013']
In [3]: ConfigList.sort(key=lambda d: datetime.strptime(d, '%d-%m-%Y'))
In [4]: ConfigList
Out[4]: ['01-08-2013', '01-09-2013', '01-10-2013', '01-02-2014', '01-03-2014']
答案 2 :(得分:1)
你想要最新的目录。 所以max功能
import datetime
ConfigList = ['01-02-2014', '01-03-2014', '01-08-2013', '01-09-2013', '01-10-2013']
max(ConfigList,key=lambda d:datetime.datetime.strptime(d, '%d-%m-%Y'))
# output '01-03-2014'