Dada una lista de fechas en formato de string, escriba un programa Python para ordenar la lista de fechas en orden ascendente.
Ejemplos:
Entrada: fechas = [“24 de julio de 2017”, “25 de julio de 2017”, “11 de junio de 1996”, “01 de enero de 2019”, “12 de agosto de 2005”, “01 de enero de 1997”]
Salida: 01 de enero de 2007
10 de julio de 2016
2 de diciembre de 2017
11 de junio de 2018
23 de junio de 2018
01 de enero de 2019
Enfoque:
en Python, podemos usar sort()
(para ordenar en el lugar) y sorted()
(devuelve una nueva lista ordenada) funciones para ordenar listas. Pero, de forma predeterminada, estas funciones de clasificación integradas ordenarán la lista de strings en orden alfabético, lo que daría como resultado un orden incorrecto en nuestro caso. Por lo tanto, necesitamos pasar un key
argumento para decirle a la función de clasificación que necesitamos comparar los elementos de la lista de una manera particular y ordenarlos en consecuencia.
En Python, tenemos el datetime
módulo que facilita la comparación basada en fechas. La datetime.strptime()
función se usa para convertir una string dada en un objeto de fecha y hora. Acepta dos argumentos: fecha (string) y formato (usado para especificar el formato, por ejemplo: %Y se usa para especificar el año) y devuelve un objeto de fecha y hora.
Sintaxis:
datetime.strptime(date, format)
El formato que requerimos para este problema es el siguiente:
%d ---> for Day %b ---> for Month %Y ---> for Year
Por lo tanto, necesitamos pasar el datetime
objeto como key
argumento en la función de clasificación para decirle a la función de clasificación que necesita comparar las strings convirtiéndolas en fechas y ordenarlas en orden creciente.
A continuación se muestra la implementación del enfoque anterior:
# Python3 program to sort the list of dates # given in string format # Import the datetime module from datetime import datetime # Function to print the data stored in the list def printDates(dates): for i in range(len(dates)): print(dates[i]) if __name__ == "__main__": dates = ["23 Jun 2018", "2 Dec 2017", "11 Jun 2018", "01 Jan 2019", "10 Jul 2016", "01 Jan 2007"] # Sort the list in ascending order of dates dates.sort(key = lambda date: datetime.strptime(date, '%d %b %Y')) # Print the dates in a sorted order printDates(dates)
01 Jan 2007 10 Jul 2016 2 Dec 2017 11 Jun 2018 23 Jun 2018 01 Jan 2019
Publicación traducida automáticamente
Artículo escrito por rituraj_jain y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA