A veces, mientras trabajamos con Python, podemos tener un problema en el que necesitamos obtener todos los registros. Estos datos pueden tener valores similares y necesitamos encontrar el par máximo de valores con clave. Este tipo de problema puede ocurrir mientras se trabaja con datos. Analicemos ciertas formas en que se puede realizar esta tarea.
Método #1: Uso de max() + groupby() + itemgetter()
la comprensión de lista +
La combinación de las funciones anteriores se puede utilizar para realizar esta tarea en particular. En esto, primero agrupamos los elementos con valores similares usando groupby() and itemgetter()
, y luego extraemos el máximo de los que usan max()
y acumulamos el resultado en la lista usando la comprensión de lista.
# Python3 code to demonstrate working of # Tuples with maximum key of similar values # using max() + groupby() + itemgetter() + list comprehension from operator import itemgetter from itertools import groupby # initialize list test_list = [(4, 3), (2, 3), (3, 10), (5, 10), (5, 6)] # printing original list print("The original list : " + str(test_list)) # Tuples with maximum key of similar values # using max() + groupby() + itemgetter() + list comprehension res = [max(values) for key, values in groupby(test_list, key = itemgetter(1))] # printing result print("The records retaining maximum keys of similar values : " + str(res))
The original list : [(4, 3), (2, 3), (3, 10), (5, 10), (5, 6)] The records retaining maximum keys of similar values : [(4, 3), (5, 10), (5, 6)]
Método n.° 2: Usar setdefault() + items()
+ bucle + comprensión de lista
La combinación de las funciones anteriores también puede lograr esta tarea. En esto, convertimos los pares clave-valor de tupla de lista en un diccionario y asignamos un valor predeterminado usando setdefault()
. El resultado final se calcula utilizando la comprensión de listas.
# Python3 code to demonstrate working of # Tuples with maximum key of similar values # using setdefault() + items() + loop + list comprehension # initialize list test_list = [(4, 3), (2, 3), (3, 10), (5, 10), (5, 6)] # printing original list print("The original list : " + str(test_list)) # Tuples with maximum key of similar values # using setdefault() + items() + loop + list comprehension temp = {} for val, key in test_list: if val > temp.setdefault(key, val): temp[key] = val res = [(val, key) for key, val in temp.items()] # printing result print("The records retaining maximum keys of similar values : " + str(res))
The original list : [(4, 3), (2, 3), (3, 10), (5, 10), (5, 6)] The records retaining maximum keys of similar values : [(4, 3), (5, 10), (5, 6)]
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