Ordenar una lista de tuplas en Python

Considere que tiene una lista de tuplas. Puedes ordenar las tuplas de la lista como lo haces con una lista de enteros.

Basado en el hecho de que una tupla puede contener múltiples elementos en ella, puedes ordenar esta lista de tuplas basándote en algún elemento de todas las tuplas.

En este tutorial, aprenderemos a ordenar una lista de tuplas basándonos en el primer, segundo o el elemento indice de las tuplas. Hay muchas formas de hacerlo. Veremos ejemplos de las siguientes formas.

  • Utilizar el método incorporado list.sort().
  • Utilizar el método bubble sort()

Se puede utilizar cualquier algoritmo de ordenación. El proceso debe ser el mismo que el de usar el bubble sort dado en este tutorial.

Ejemplo 1: Ordenar una lista de tuplas con list.sort()

En este ejemplo, tomamos tuplas que contienen el nombre y las notas de los estudiantes de una clase. Vamos a ordenar estas tuplas en base a las notas, el segundo elemento de todas las tuplas.

lista_estudiantes = [('Saranya', 84), ('Surya', 92),
                 ('Joy', 88), ('Sree', 86), ('Ritha', 89)]
 
#ordenar por el segundo elemento de la tupla 
lista_estudiantes.sort(key=lambda x: x[1])  # index 1 significa segundo elemento

print(lista_estudiantes)

Salida:

[('Saranya', 84), ('Sree', 86), ('Joy', 88), ('Ritha', 89), ('Surya', 92)]

La lista de tuplas se ordena en el orden creciente del segundo elemento de las tuplas. Puede cambiar el orden de creciente a decreciente pasando True para el parámetro reverse del método sort(). O también puede utilizar lista.reverse() en la lista ordenada de forma ascendente.

En el siguiente ejemplo, ordenaremos la lista de tuplas en orden descendente, utilizando el parámetro reverse.

lista_estudiantes = [('Saranya', 84), ('Surya', 92),
                     ('Joy', 88), ('Sree', 86), ('Ritha', 89)]

# ordenar por el segundo elemento de la tupla
lista_estudiantes.sort(key=lambda x: x[1], reverse=True)

print(lista_estudiantes)

Salida:

[('Surya', 92), ('Ritha', 89), ('Joy', 88), ('Sree', 86), ('Saranya', 84)]

Ejemplo 2: Ordenar una lista de tuplas utilizando el algoritmo Bubble Sort

Tomaremos la misma lista de tuplas del ejemplo anterior y las ordenaremos en base a las marcas como antes, pero utilizando el algoritmo Bubble Sort.

lista = [('Saranya', 84), ('Surya', 92),
         ('Joy', 88), ('Sree', 86), ('Ritha', 89)]

# Ordenar tuplar mediante el segudo elemento
elemento_indice = 1
lista_long = len(lista)
for i in range(0, lista_long):
    for j in range(0, lista_long-i-1):
        if (lista[j][elemento_indice] > lista[j + 1][elemento_indice]):
            temp = lista[j]
            lista[j] = lista[j + 1]
            lista[j + 1] = temp

print(lista)

Salida:

[('Saranya', 84), ('Sree', 86), ('Joy', 88), ('Ritha', 89), ('Surya', 92)]

En el programa anterior, la variable elemento_indice define la posición en las tuplas, por la que hay que hacer la ordenación. Ahora vamos a ordenar la lista de tuplas por el primer elemento de las tuplas.

lista = [('Saranya', 84), ('Surya', 92),
         ('Joy', 88), ('Sree', 86), ('Ritha', 89)]

# Ordenar tuplar mediante el segudo elemento
elemento_indice = 0 # Primer elemento de cada tupla
lista_long = len(lista)
for i in range(0, lista_long):
    for j in range(0, lista_long-i-1):
        if (lista[j][elemento_indice] > lista[j + 1][elemento_indice]):
            temp = lista[j]
            lista[j] = lista[j + 1]
            lista[j + 1] = temp

print(lista)

Salida:

[('Joy', 88), ('Ritha', 89), ('Saranya', 84), ('Sree', 86), ('Surya', 92)]

En este tutorial de Ejemplos de Python, hemos aprendido a ordenar una lista de tuplas utilizando funciones incorporadas y algoritmos de ordenación, con la ayuda de ejemplos bien detallados.

Deja una respuesta