Python: máximo de claves similares en tuplas

A veces, mientras trabajamos con tuplas de Python, podemos tener un problema en el que necesitamos realizar el máximo de todos los valores de las claves iguales en la lista de tuplas. Este tipo de aplicación es útil en muchos dominios, como el desarrollo web y la programación diaria. Analicemos ciertas formas en que se puede realizar esta tarea.

Entrada : test_list = [(4, 8), (4, 2), (4, 2), (4, 6)] 
Salida : [(4, 18)]

Entrada : test_list = [(1, 8), (2, 2), (3, 6), (4, 2)] 
Salida : [(1, 8), (2, 2), (3, 6), (4, 2)] 
 

Método #1: Usar max() + groupby() + lambda + loop 
La combinación de las funciones anteriores se puede usar para resolver este problema. En esto, realizamos la tarea de agrupar usando groupby() y el máximo se extrae usando max(), y el resultado se compila usando loop.

Python3

# Python3 code to demonstrate working of
# Maximum of Similar Keys in Tuples
# Using max() + groupby() + lambda + loop
from itertools import groupby
 
# initializing lists
test_list = [(4, 8), (3, 2), (2, 2), (4, 6), (3, 7), (4, 5)]
 
# printing original list
print("The original list is : " + str(test_list))
 
# Maximum of Similar Keys in Tuples
# Using max() + groupby() + lambda + loop
test_list.sort(key = lambda sub: sub[0])
temp = groupby(test_list, lambda ele: ele[0])
res = []
for key, val in temp:
    res.append((key, sum([ele[1] for ele in val])))
 
# printing result
print("Maximum grouped elements : " + str(res))
Producción : 

The original list is : [(4, 8), (3, 2), (2, 2), (4, 6), (3, 7), (4, 5)]
Maximum grouped elements : [(2, 2), (3, 7), (4, 8)]

 

Método #2: Usar max() + groupby() + itemgetter() + comprensión de lista 
La combinación de las funciones anteriores se puede usar para resolver este problema. En esto, realizamos una tarea similar a la anterior, el segundo elemento se elige usando itemgetter y la comprensión de lista se usa para compilar elementos y extraer resultados. 

Python3

# Python3 code to demonstrate working of
# Maximum of Similar Keys in Tuples
# Using max() + groupby() + itemgetter() + list comprehension
from itertools import groupby
from operator import itemgetter
 
# initializing lists
test_list = [(4, 8), (3, 2), (2, 2), (4, 6), (3, 7), (4, 5)]
 
# printing original list
print("The original list is : " + str(test_list))
 
# Maximum of Similar Keys in Tuples
# Using max() + groupby() + itemgetter() + list comprehension
temp = groupby(sorted(test_list, key = itemgetter(0)), key = itemgetter(0))
res = [(key, max(map(itemgetter(1), sub))) for key, sub in temp]
 
# printing result
print("Maximum grouped elements : " + str(res))
Producción : 

The original list is : [(4, 8), (3, 2), (2, 2), (4, 6), (3, 7), (4, 5)]
Maximum grouped elements : [(2, 2), (3, 7), (4, 8)]

 

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 *