Python: ordenación de columnas múltiples en tuplas

A veces, mientras trabajamos con registros, podemos tener un problema en el que necesitamos realizar una operación de clasificación en una de las columnas, y en otra columna, si son elementos iguales, clasificación opuesta. Este tipo de problema puede ocurrir como aplicación en muchos dominios, como el desarrollo web. Analicemos ciertas formas en que se puede resolver este problema.

Entrada : test_list = [(6, 7), (6, 5), (6, 4), (7, 10)] Salida: [(7, 10), (6, 
4 ), (6, 5), (6, 7)]

Entrada : test_list = [(10, 7), (8, 5)] 
Salida : [(10, 7), (8, 5)] 
 

Método #1: Usar sorted() + lambda 
La combinación de las funciones anteriores puede ofrecer una de las formas de resolver este problema. En esto, realizamos la ordenación usando sorted() y la manipulación de la orden y la columna es manejada por la función lambda.

Python3

# Python3 code to demonstrate working of
# Multiple Column Sort in Tuples
# Using sorted() + lambda
 
# initializing list
test_list = [(6, 7), (6, 5), (1, 4), (8, 10)]
 
# printing original list
print("The original list is : " + str(test_list))
 
# Multiple Column Sort in Tuples
# Using sorted() + lambda
res = sorted(test_list, key = lambda sub: (-sub[0], sub[1]))
 
# printing result
print("The sorted records : " + str(res))
Producción : 

The original list is : [(6, 7), (6, 5), (1, 4), (8, 10)]
The sorted records : [(8, 10), (6, 5), (6, 7), (1, 4)]

 

 Método n.º 2: uso de itemgetter() + sorted() 
Esta es otra forma en la que se puede realizar esta tarea. En esto, realizamos la tarea requerida para la función lambda usando itemgetter().

Python3

# Python3 code to demonstrate working of
# Multiple Column Sort in Tuples
# Using itemgetter() + sorted()
from operator import itemgetter
 
# initializing list
test_list = [(6, 7), (6, 5), (1, 4), (8, 10)]
 
# printing original list
print("The original list is : " + str(test_list))
 
# Multiple Column Sort in Tuples
# Using itemgetter() + sorted()
res = sorted(test_list, key = itemgetter(1))
res = sorted(res, key = itemgetter(0), reverse = True)
 
# printing result
print("The sorted records : " + str(res))
Producción : 

The original list is : [(6, 7), (6, 5), (1, 4), (8, 10)]
The sorted records : [(8, 10), (6, 5), (6, 7), (1, 4)]

 

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 *