Cómo ordenar casi cualquier tipo de lista en Python
Ordenar una lista en Python le permite organizar sus elementos en orden ascendente o descendente.
En lugar de escribir largos bloques de código para hacer eso, Python tiene un método incorporado que le permite ordenar los elementos en cualquier lista o matriz. Explicaremos cómo hacerlo en esta publicación.
Cómo ordenar una lista en Python
Puede ordenar los elementos en una lista o matriz utilizando el método sort () de Python.
El método sort () en Python acepta dos argumentos opcionales y la sintaxis se ve así:
list.sort(key = function, reverse = True/False)
De forma predeterminada, el método sort () organiza los elementos de una lista en orden ascendente:
myList = ["C", "D", "B", "A", "F"]
myList.sort()
print(myList)
Output: ['A', 'B', 'C', 'D', 'F']
Puede utilizar el argumento inverso para ver la lista en orden descendente:
myList = ["C", "D", "B", "A", "F"]
myList.sort(reverse = True)
print(myList)
Output: ['F', 'D', 'C', 'B', 'A']
También puede organizar los elementos en una lista por la longitud de cada cadena.
Para hacerlo, crea una función y pásala al método sort () usando el argumento clave opcional:
myList = ["MUO", "Python", "JavaScript", "Sort", "Sortlists"]
def sortLength(item):
return len(item)
myList.sort(reverse = True, key = sortLength)
print(myList)
Output: ['JavaScript', 'Sortlists', 'Python', 'Sort', 'MUO']
Cómo ordenar una lista de diccionarios en Python
También puede utilizar el método sort () para ordenar una lista de diccionarios.
Ordenemos las tareas en el diccionario a continuación por su tiempo:
myArray = [
{"Task": "Wash", "Time": 12.00},
{"Task":"Football", "Time": 24.00},
{"Task":"Sort", "Time": 17.00},
{"Task":"Code", "Time": 15.00}
]
def sortByTime(item):
return item["Time"]
myArray.sort(key = sortByTime)
print(myArray)
Dado que los valores de tiempo son números enteros, el bloque de código anterior reorganiza la matriz en función del tiempo de la tarea.
Además de ordenar la matriz anterior por tiempo, también puede ordenarla alfabéticamente usando las tareas, que son cadenas.
Para ordenar por cadena en la matriz de ejemplo, solo necesita cambiar Tiempo en el corchete a Tarea :
myArray = [
{"Task": "Wash", "Time": 12.00},
{"Task":"Football", "Time": 24.00},
{"Task":"Sort", "Time": 17.00},
{"Task":"Code", "Time": 15.00}
]
def sortByTime(item):
return item["Task"]
myArray.sort(key = sortByTime)
print(myArray)
También puede ordenar las tareas en orden inverso estableciendo reverse en verdadero:
myArray.sort(key = sortByTime, reverse = True)
También puede usar una función lambda con sort () para un código más limpio:
myArray.sort(key = lambda getTime: getTime["Time"])
print(myArray)
Cómo ordenar una lista de Python anidada
Puede ordenar una lista anidada de tuplas por el índice de cada elemento anidado en esa lista.
Por ejemplo, el siguiente código utiliza el tercer elemento de cada tupla para ordenar la lista en orden ascendente:
Alist = [(3, 19, 20), (2, 6, 0), (1, 8, 15), (7, 9, 3), (10, 19, 4)]
def sortByThirdIndex(a):
return a[2]
Alist.sort(key = sortByThirdIndex)
print(Alist)
Output: [(2, 6, 0), (7, 9, 3), (10, 19, 4), (1, 8, 15), (3, 19, 20)]
En la salida anterior, el tercer elemento de cada tupla aumenta de cero a veinte de forma consecutiva.
Tenga en cuenta que esto no funciona con un conjunto de Python ya que no puede indexarlo. Además de eso, cada nido de la lista debe pertenecer al mismo tipo de datos.
Sin embargo, para organizar la salida en orden descendente:
Alist.sort(key = getIndex, reverse = True)
print(Alist)
Output: [(3, 19, 20), (1, 8, 15), (10, 19, 4), (7, 9, 3), (2, 6, 0)]
Veamos también cómo se ve esto con una función lambda :
Alist = [(3, 19, 20), (2, 6, 0), (1, 8, 15), (7, 9, 3), (10, 19, 4)]
newList = sorted(Alist, key = lambda a: a[2])
print(newList)
Output: [(2, 6, 0), (7, 9, 3), (10, 19, 4), (1, 8, 15), (3, 19, 20)]
Cómo ordenar una lista usando el método Sorted ()
Alternativamente, puede utilizar el método sorted () .
Aunque funciona de manera similar al método sort () , crea una nueva lista ordenada sin modificar la original. Su diseño de sintaxis también es ligeramente diferente.
La sintaxis del método sorted () generalmente se ve así:
sorted(list, key = function, reverse = True/False)
Entonces, para ordenar una lista usando el método sorted () , necesita crear una nueva variable para la lista ordenada:
Alist = [(3, 19, 20), (2, 6, 0), (1, 8, 15), (7, 9, 3), (10, 19, 4)]
def getIndex(a):
return a[2]
newList = sorted(Alist, key = getIndex)
print(newList)
Output: [(2, 6, 0), (7, 9, 3), (10, 19, 4), (1, 8, 15), (3, 19, 20)]
El método sorted () también acepta una función lambda como clave:
Alist = [(3, 19, 20), (2, 6, 0), (1, 8, 15), (7, 9, 3), (10, 19, 4)]
newList = sorted(Alist, key = lambda a: a[2])
print(newList)
Output: [(2, 6, 0), (7, 9, 3), (10, 19, 4), (1, 8, 15), (3, 19, 20)]
¿Dónde se puede aplicar la clasificación de listas?
Es necesario tener un conocimiento sólido del método de ordenación de Python para una programación eficiente. Le permite controlar cómo llega una lista o matriz, y siempre puede aplicarla en proyectos de la vida real. Por ejemplo, ordenar una lista de Python puede resultar útil cuando se reorganizan los datos de una API o una base de datos, por lo que tiene más sentido para un usuario final.