Programa Python para ordenar una tupla de objetos personalizados por propiedades
Veamos ahora qué es un objeto personalizado en Python. Sabemos que Python nos proporciona muchos tipos de datos predefinidos que pueden usarse para almacenar varios tipos de datos. Pero hay ocasiones en las que tenemos que definir tipos de datos personalizados que puedan almacenar datos que no pueden representarse mediante tipos de datos integrados.
Para ello, Python nos proporciona "clases", estas clases nos ayudan a personalizar y crear algo que se ajuste a nuestras necesidades. Una clase puede tener datos y funciones para implementar algún comportamiento. Un ejemplo de implementación de una clase en Python es el siguiente:
class TempClass:
self.name = ""
self.age = 0
Arriba se muestra un ejemplo de una clase que tiene un nombre "TempClass" y almacena el nombre y la edad con sus valores predeterminados " " y 0 respectivamente. Usamos self para definir que estamos accediendo a valores de una instancia particular de una clase y el punto '.' El operador se usa para acceder a los elementos de una clase.
Ahora que sabemos qué son los objetos personalizados en Python, veremos qué entendemos por tupla de objetos personalizados. Cuando una tupla se compone de todos los elementos que son un objeto personalizado, instancias de clase, entonces decimos que tenemos una tupla de objetos personalizados.
Para los ejemplos siguientes, consideraremos una clase que tiene nombre y edad como miembros de datos. Y haremos una tupla que contenga únicamente los objetos de esta clase.
Usando la función ordenar()
La función sort() es una función incorporada de Python que toma el nombre de una lista, mapa, conjunto o tupla como argumento y ordena la estructura de datos.
Para ordenar una tupla usando la función ordenar tendremos que usar la conversión de tipos. La idea será almacenar los objetos de clase en una tupla sin clasificar, luego usar esta tupla, crear una lista de nombres y ordenarla. Utilice esta lista ordenada de nombres para ordenar la tupla completa por nombres.
Algoritmo
Paso 1: tome el número de elementos de la tupla como entrada del usuario
Paso 2: use el bucle for para almacenar la cantidad de objetos requeridos, en cada iteración ingrese el nombre y la edad y almacene un objeto de clase con los valores de entrada como sus elementos de datos.
Paso 3: cree una lista llamada sortedNames, itere sobre unsortedTuple y almacene todos los elementos de nombre de cada objeto en la lista sortedNames.
Paso 4 : use la función de clasificación en la lista sortedNames, ahora tenemos una lista que contiene nombres ordenados
Paso 5: cree una tupla ordenada llamada tupla, itere sobre la lista de nombres ordenados usando el bucle for
Paso 6: use otro bucle for anidado para iterar sobre unsortedTuple
Paso 7: compruebe si la parte del nombre del objeto actual de la tupla es el mismo que el nombre en la lista de nombres ordenados
Paso 8: en caso afirmativo, almacene el objeto actual en la lista sortedTuple y salga del bucle interno.
Paso 9: si no, continúe con el siguiente objeto de la tupla sin clasificar
Paso 10 – Imprime los elementos de sortedTuple
Ejemplo
Veamos un ejemplo para esto –
class MyTuple:
def __init__(self, name, age) -> None:
self.name = name
self.age = age
unsortedTuple =( MyTuple("Vijay",23) , MyTuple("Aman",27), MyTuple("Aastha",21) )
print("Tuple before sorting by names are : ")
for person in unsortedTuple:
print(f"Name : {person.name} Age : {person.age}")
sortedTuple = sorted(unsortedTuple, key= lambda person: person.name)
print("Tuple after sorting by names are : ")
for person in sortedTuple:
print(f"Name : {person.name} Age : {person.age}")
Producción
Tuple before sorting by names are :
Name : Raj Age : 23
Name : Aman Age : 21
Name : Suraj Age : 26
Tuple after sorting by names are :
Name : Aman Age : 21
Name : Raj Age : 23
Name : Suraj Age : 26
Usando el método sorted() con atributo clave
Alternativamente, también podemos usar el método ordenado que está integrado en Python con el atributo clave para ordenar la tupla por propiedades.
Esta función devuelve una lista ordenada del objeto iterable especificado. El atributo clave toma una función, generalmente una función lambda, y ordena el iterable según estas claves.
Ejemplo
Veamos un ejemplo -
class MyTuple:
def __init__(self, name, age) -> None:
self.name = name
self.age = age
unsortedTuple =( MyTuple("Vijay",23) , MyTuple("Aman",27), MyTuple("Aastha",21) )
print("Tuple before sorting by names are : ")
for person in unsortedTuple:
print(f"Name : {person.name} Age : {person.age}")
sortedTuple = sorted(unsortedTuple, key= lambda person: person.name)
print("Tuple after sorting by names are : ")
for person in sortedTuple:
print(f"Name : {person.name} Age : {person.age}")
Producción
Tuple before sorting by names are :
Name : Vijay Age : 23
Name : Aman Age : 27
Name : Aastha Age : 21
Tuple after sorting by names are :
Name : Aastha Age : 21
Name : Aman Age : 27
Name : Vijay Age : 23
Conclusión
En este artículo, vimos qué es un objeto personalizado en Python y cómo podemos implementarlo usando clases. También vimos cómo podemos crear una tupla de objetos personalizados y cómo podemos utilizar los métodos de clasificación y clasificación para ordenarlos por propiedades.