Python: columna máxima en la array de valores del diccionario

Dado un diccionario con valores de array, calcule el máximo de cada columna de esa array.

Input  :  test_dict = {"Gfg" : [[7, 6], [3, 2]],
                                        "is" : [[3, 6], [6, 10]],
                                        "best" : [[5, 8], [2, 3]]}
Output : {'Gfg': [7, 6], 'is': [6, 10], 'best': [5, 8]}
Explanation :  7 > 3, 6 > 2, hence ordering.

Input  :  test_dict = {"Gfg" : [[7, 6], [3, 2]],
                                        "is" : [[3, 6], [6, 10]]}
Output : {'Gfg': [7, 6], 'is': [6, 10]}
Explanation :  6 > 3, 10 > 6, hence ordering.

Método #1: Usar la comprensión del diccionario + sorted() + items()

Esta es una de las formas en que se puede realizar esta tarea. En esto, las columnas internas se extraen y ordenan y el último valor de la lista ordenada (máximo) se devuelve como resultado. Esto sucede para todos los valores de la lista que utilizan la comprensión del diccionario.

Python3

# Python3 code to demonstrate working of
# Column Maximums of Dictionary Value Matrix
# Using dictionary comprehension + sorted() + items()
 
# initializing dictionary
test_dict = {"Gfg" : [[5, 6], [3, 4]],
            "is" : [[4, 6], [6, 8]],
            "best" : [[7, 4], [2, 3]]}
 
# printing original dictionary
print("The original dictionary is : " + str(test_dict))
 
# sorted() used to sort and "-1" used to get last i.e
# maximum element
res = {key : sorted(val, key = lambda ele : (ele[0], ele[1]))[-1] for key, val in test_dict.items()}
 
# printing result
print("The evaluated dictionary : " + str(res))
Producción

The original dictionary is : {'Gfg': [[5, 6], [3, 4]], 'is': [[4, 6], [6, 8]], 'best': [[7, 4], [2, 3]]}
The evaluated dictionary : {'Gfg': [5, 6], 'is': [6, 8], 'best': [7, 4]}

Método #2: Usar max() + map() + zip()

Esta es una de las formas en que se puede realizar esta tarea. En esto, extraemos el máximo usando max(), y alineamos las columnas a la lista usando zip() y map() se usa para extender la lógica de zip a cada columna.

Python3

# Python3 code to demonstrate working of
# Column Maximums of Dictionary Value Matrix
# Using max() + map() + zip()
 
# initializing dictionary
test_dict = {"Gfg" : [[5, 6], [3, 4]],
            "is" : [[4, 6], [6, 8]],
            "best" : [[7, 4], [2, 3]]}
 
# printing original dictionary
print("The original dictionary is : " + str(test_dict))
 
# map extending logic to entire columns
# result compiled using dictionary comprehension
res = {key: list(map(max, zip(*val))) for key, val in test_dict.items()}
 
# printing result
print("The evaluated dictionary : " + str(res))
Producción

The original dictionary is : {'Gfg': [[5, 6], [3, 4]], 'is': [[4, 6], [6, 8]], 'best': [[7, 4], [2, 3]]}
The evaluated dictionary : {'Gfg': [5, 6], 'is': [6, 8], 'best': [7, 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 *