Búsqueda de sitios web

Programa Python para ordenar una tupla por valores


En este artículo, discutiremos cómo ordenar una tupla por valores en Python. Una tupla es una estructura de datos similar a una lista, pero es inmutable, lo que significa que una vez creada, no podemos cambiar los valores de los elementos que contiene.

Ejemplo

El siguiente es un ejemplo para crear una tupla:

tple = ("Hello", "world", "hi")
print(tple)

Producción

(“Hello”, “world”, “hi”)

Los elementos triples ordenados e inmutables pueden tener múltiples valores. Se asigna un índice de [0] al primer elemento de un triple, [1] al segundo, y así sucesivamente.

Cuando nos referimos a una tupla como ordenada, implicamos que los elementos están ordenados en un orden determinado.

Debido a su inmutabilidad, a las tuplas no se les puede cambiar, agregar o eliminar ninguno de sus componentes una vez que se han creado.

Ejemplo

Se permiten valores duplicados en tuplas:

tple = ("apple", "banana", "cherry", "apple", "cherry")
print(tple)

Producción

(‘apple’, ‘banana’, ‘cherry’, ‘apple’, ‘cherry’

Claves y valores en tuplas

Las claves y los valores no suelen existir como pares en una tupla, ya que sólo se utilizan para contener instancias únicas de un objeto determinado. Por otro lado, para crear una tupla que contenga claves y valores, debemos crear tuplas que estén anidadas una dentro de otra.

Por tanto, el primer valor de cada tupla representará su clave y el segundo valor representará su valor.

Ejemplo

ListOfTuples = ((1, 4), (3, 5), (4, 5), (5, 6))

En la línea de código anterior, dos tuplas están encerradas dentro de una tupla; como resultado, el primer elemento de la lista externa, por ejemplo, es una tupla con dos valores. Aquí, la clave de la tupla está representada por el valor 1 y su valor de datos por el valor 4, respectivamente.

Usaremos la indexación para acceder a los elementos internos de la tupla, así como a las claves y valores, ya que sabemos que ahora se puede usar la indexación para acceder a una tupla.

print(ListOfTuples[0][0])

Esto generará la clave de la primera tupla de la lista externa que se encuentra. Pero ¿qué pasa si no somos conscientes de cuántos elementos contiene la lista exterior? Corremos el peligro de encontrar un error de índice fuera de rango, lo que indica que estamos intentando acceder a un elemento que no está presente en la tupla, si utilizamos la indexación para intentar llegar a los elementos internos en tal escenario.

Usando la función len()

Para resolver este problema, podemos usar la función len para determinar cuántos elementos hay en la lista externa antes de usarla para generar las claves y valores solo para esos componentes.

Tenga en cuenta que los valores son en realidad el segundo elemento de la lista anidada, por lo que si tenemos que ordenar la lista de tuplas, tenemos que comparar los valores que son los segundos elementos de todas las tuplas dentro de la lista y solo después de comparar todos esos valores. podremos ordenarlos.

Como requiere examinar los valores, una y otra vez, necesitaremos el bucle for anidado. El algoritmo para el mismo será el siguiente.

Algoritmo

  • Cree una lista de tuplas con el elemento como una tupla de dos valores, siendo el primero la clave y el segundo el elemento de datos.

  • Imprima la lista de tuplas antes de ordenar.

  • Utilice el 'bucle for' para iterar sobre los elementos de la lista desde 0 hasta la longitud de esa lista.

  • Utilice otro bucle anidado que se ejecutará de 0 a uno menos que la longitud de la lista.

  • Ahora compruebe si la parte del valor del elemento actual es mayor que la parte del valor del siguiente elemento.

  • En caso afirmativo, intercambie ambos elementos, tuplas.

  • Si no, continúe con el siguiente elemento.

Ejemplo

tupleList = [(2, 5), (1, 3), (17, 27), (0, 5), (4, 1)]
print("The elements of tuple list before sorting by values are : ")
for item in tupleList:
   print(f"Key : {item[0]} Value : {item[1]}")
for i in range(len(tupleList)):
   for j in range(len(tupleList) - 1):
      if tupleList[j][1] > tupleList[j+1][1]:
         tupleList[j], tupleList[j+1] = tupleList[j+1], tupleList[j]
print("The elements of tuple list after sorting by values are : ")
for item in tupleList:
   print(f"Key : {item[0]} Value : {item[1]}")

Producción

The elements of tuple list before sorting by values are :
Key : 2 Value : 5
Key : 1 Value : 3
Key : 17 Value : 27
Key : 0 Value : 5
Key : 4 Value : 1
The elements of tuple list after sorting by values are :
Key : 4 Value : 1
Key : 1 Value : 3
Key : 2 Value : 5
Key : 0 Value : 5
Key : 17 Value : 27

Conclusión

En este artículo, vimos el uso de bucles anidados para ordenar una tupla por sus valores. Alternativamente, también podemos utilizar el método sort con una función lambda para escribir una solución de una línea para el mismo problema.

TupleWithKeys.sort(key=lambda item: item[1])

El método anterior es en realidad la forma más pitónica de resolver el problema.

Artículos relacionados: