Python | Clasificación personalizada en la lista de tuplas

A veces, mientras trabajamos con una lista de tuplas, podemos tener un problema en el que necesitamos realizar su clasificación. La clasificación ingenua es más fácil, pero a veces tenemos que realizar una clasificación personalizada, es decir, ordenando decreciente el primer elemento y aumentando el orden del segundo elemento. Y estos también pueden ser en casos de diferentes tipos de tuplas. Analicemos ciertos casos y soluciones para realizar este tipo de clasificación personalizada.

Método #1: Usar sorted()+ lambda
Esta tarea se puede realizar usando la combinación de las funciones anteriores. En esto, solo realizamos la clasificación normal, pero además alimentamos una función lambda que maneja el caso de la clasificación personalizada discutida anteriormente.

# Python3 code to demonstrate working of
# Custom sorting in list of tuples
# Using sorted() + lambda
  
# Initializing list
test_list = [(7, 8), (5, 6), (7, 5), (10, 4), (10, 1)]
  
# printing original list
print("The original list is : " + str(test_list))
  
# Custom sorting in list of tuples
# Using sorted() + lambda
res = sorted(test_list, key = lambda sub: (-sub[0], sub[1]))
  
# printing result
print("The tuple after custom sorting is : " + str(res))
Producción :

The original list is : [(7, 8), (5, 6), (7, 5), (10, 4), (10, 1)]
The tuple after custom sorting is : [(10, 1), (10, 4), (7, 5), (7, 8), (5, 6)]

Método n.º 2: Usar sorted() + lambda() + sum()(con la condición de suma de tuplas)
En este método, se sostiene una solución similar. Pero el caso aquí es que tenemos la tupla como el segundo elemento de la tupla y su suma debe considerarse para el orden de clasificación. Otras funciones además de la suma pueden extenderse en una solución similar.

# Python3 code to demonstrate working of
# Custom sorting in list of tuples
# Using sorted() + lambda() + sum()
  
# Initializing list
test_list = [(7, (8, 4)), (5, (6, 1)), (7, (5, 3)), (10, (5, 4)), (10, (1, 3))]
  
# printing original list
print("The original list is : " + str(test_list))
  
# Custom sorting in list of tuples
# Using sorted() + lambda() + sum()
res = sorted(test_list, key = lambda sub: (-sub[0], sum(sub[1])))
  
# printing result
print("The tuple after custom sorting is : " + str(res))
Producción :

The original list is : [(7, (8, 4)), (5, (6, 1)), (7, (5, 3)), (10, (5, 4)), (10, (1, 3))]
The tuple after custom sorting is : [(10, (1, 3)), (10, (5, 4)), (7, (5, 3)), (7, (8, 4)), (5, (6, 1))]

Publicación traducida automáticamente

Artículo escrito por manjeet_04 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 *