Ordenar una lista de fechas en Python

Tengo una lista en Python que es directorios, cuyos nombres son la fecha en que fueron creados;

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'] 

Quiero que el directorio más reciente que es ese ejemplo es 01-03-2014 , el segundo en la lista. Las fechas son DD-MM-YYYY.

¿Se puede ordenar esto usando la llave de clasificación lamba o debo simplemente lanzarme y escribir una función de clasificación simple?

Deberías analizar la fecha en una clave de clasificación:

 from datetime import datetime sorted(ConfigList, key=lambda d: datetime.strptime(d, '%d-%m-%Y')) 

Manifestación:

 >>> 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'] 

sorted volverá copia de la lista original.

Si desea ordenar los datos en el mismo objeto, puede ordenarlos usando el método 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'] 

quieres el directorio más reciente. así que la función máxima

 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'