Python | Ordenar la lista de fechas dadas como strings

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 keyargumento 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 datetimemó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 keyargumento 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) 
Producción:

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *