¿Cómo convertir valores del diccionario a magnitud absoluta usando Python?
Los diccionarios son estructuras de datos que pueden contener claves y valores de cualquier tipo de datos. Los valores también pueden ser de tipo entero. En este artículo veremos cómo convertir valores del diccionario a magnitud absoluta usando Python, lo que simplemente significa que si un valor es negativo, se convertirá a su valor absoluto o positivo, mientras que los valores positivos permanecerán como están.
Ejemplo de E/S
Entrada={'a':1, 'b': -1}
Salida={'a':1, 'b': 1}
Para realizar esta conversión, existen muchas técnicas, sin embargo, una función que se utilizará junto con la mayoría de ellas es la función abs(). Está integrado y devuelve el valor absoluto de un número que se le proporciona como entrada o puede considerarse como una función que calcula la magnitud de un valor numérico independientemente de su signo.
La función abs() básicamente toma un único argumento, que puede ser un número entero, de punto flotante o un número complejo. Devuelve el valor absoluto del argumento de entrada. Si la entrada es un número real (entero o flotante), la función devuelve su valor positivo. Si la entrada es un número complejo, la función devuelve su magnitud, que es la distancia desde el origen (0, 0) en el plano complejo.
Método 1: bucle y actualización (método ingenuo)
Este método simplemente itera sobre todo el diccionario y aplica la función abs() en cada valor del mismo. A los valores se accede y configura mediante las teclas.
Ejemplo
my_dict = {'x': -11, 'y': 7, 'e': -82, 't': 42, 'r': -175}
for key in my_dict:
my_dict[key] = abs(my_dict[key])
print(my_dict)
Producción
{'x': 11, 'y': 7, 'e': 82, 't': 42, 'r': 175}
Método 2: comprensión del diccionario
La comprensión de diccionarios de Python nos ofrece un método sencillo para crear rápidamente diccionarios con una complejidad de sintaxis mínima. Esta construcción genera nuevos diccionarios iterando sobre un iterable y asignando claves y valores usando expresiones intuitivas, mejorando así la legibilidad y cortando bucles explícitos y líneas de código adicionales.
Ejemplo
my_dict = {'x': -11, 'y': 7, 'e': -82, 't': 42, 'r': -175}
abs_dict = {key: abs(value) for key, value in my_dict.items()}
print(abs_dict)
Producción
{'x': 11, 'y': 7, 'e': 82, 't': 42, 'r': 175}
Método 3: usar map() con la función lambda
Python consta de una función map() que nos permite aplicar (o mapear) una función determinada a cada elemento de un iterable y luego devuelve un iterador que consta de los resultados. Se necesitan 2 argumentos: la función a aplicar; el iterable para operar.
En combinación con funciones lambda, que son funciones anónimas definidas sobre la marcha, map() se convierte en una poderosa herramienta para realizar operaciones simples en elementos de un iterable. Las funciones Lambda se utilizan normalmente cuando se necesita una función durante un período breve o como argumento para una función de orden superior como map().
Ejemplo
my_dict = {'x': -11, 'y': 7, 'e': -82, 't': 42, 'r': -175}
abs_dict = {key: abs(value) for key,
value in map(lambda item: (item[0], item[1]), my_dict.items())}
print(abs_dict)
Producción
{'x': 11, 'y': 7, 'e': 82, 't': 42, 'r': 175}
Método 4: uso del constructor y comprensión dict()
El constructor de diccionarios integrado de Python, dict(), puede crear nuevos objetos de diccionario de forma rápida y eficiente a partir de diversas formas de entrada, como iterables, pares clave-valor o incluso diccionarios existentes.
Combina la comprensión del diccionario para una fácil creación de diccionarios utilizando iterables u otras fuentes de datos. Con esta herramienta flexible en la mano, el constructor dict() se convierte en un medio eficiente para producir diccionarios de mapeo clave-valor con pares clave/valor precisos derivados de iterables u otras fuentes de datos.
Ejemplo
my_dict = {'x': -11, 'y': 7, 'e': -82, 't': 42, 'r': -175}
abs_dict = dict((key, abs(value)) for key, value in my_dict.items())
print(abs_dict)
Producción
{'x': 11, 'y': 7, 'e': 82, 't': 42, 'r': 175}
Método 5: uso de un bucle for y comprensión de diccionario
El código proporcionado a continuación ilustra la creación de un diccionario llamado "my_dict" con múltiples pares clave-valor. La comprensión del diccionario permite iterar sobre estas claves para producir otro diccionario llamado "abs_dict", donde cada clave se corresponde con un valor absoluto de su valor correspondiente en "my_dict", a través de la función abs(). Cuando se ejecuta, abs_dict se muestra de manera idéntica, pero con valores de magnitud absoluta transformados. El código concluye imprimiendo esta segunda versión que aún mantiene claves idénticas pero los valores se han transformado en sus magnitudes absolutas.
Ejemplo
my_dict = {'x': -11, 'y': 7, 'e': -82, 't': 42, 'r': -175}
abs_dict = {key: abs(my_dict[key]) for key in my_dict}
print(abs_dict)
Producción
{'x': 11, 'y': 7, 'e': 82, 't': 42, 'r': 175}
Método 6: usar la comprensión del diccionario con el método update()
La comprensión del diccionario combinada con una función de actualización crea una solución eficaz. Después de crear el diccionario llamado "my_dict", la comprensión del diccionario agrega todas sus claves con sus valores actualizados de acuerdo con sus valores absolutos.
Ejemplo
my_dict = {'x': -11, 'y': 7, 'e': -82, 't': 42, 'r': -175}
abs_dict = {}
abs_dict.update({key: abs(value) for key, value in my_dict.items()})
print(abs_dict)
Producción
{'x': 11, 'y': 7, 'e': 82, 't': 42, 'r': 175}
Método 7: usar numpy
La biblioteca NumPy de uso común de Python nos ofrece muchas funciones. Sin embargo, en este caso, una de esas funciones que es de gran utilidad aquí es numpy.abs(). Esto nos permite calcular los valores absolutos de elementos numéricos dentro de un objeto similar a una matriz. Toma la entrada como una matriz o cualquier escalar y luego devuelve una matriz/escalar con valores absolutos de los elementos correspondientes.
Ejemplo
import numpy as np
my_dict = {'x': -11, 'y': 7, 'e': -82, 't': 42, 'r': -175}
abs_dict = {key: np.abs(value) for key, value in my_dict.items()}
print(abs_dict)
Producción
{'x': 11, 'y': 7, 'e': 82, 't': 42, 'r': 175}
Método 8: usar pandas
Pandas es solo otra biblioteca de manipulación y manejo de datos como numpy. Creamos un marco de datos de pandas aquí a partir de todos los valores del diccionario y creamos una nueva columna que llamaremos abs_values. Luego aplicamos la función abs() a las columnas iniciales que contienen los valores. Los nuevos valores, es decir, después de aplicar abs(), se almacenan en la columna abs_values y luego se vuelven a convertir en un diccionario usando la función to_dict().
Ejemplo
import pandas as pd
my_dict = {'x': -11, 'y': 7, 'e': -82, 't': 42, 'r': -175}
df = pd.DataFrame({'values': my_dict})
# Apply the abs() function to the 'values' column.
df['abs_values'] = df['values'].abs()
abs_dict = df['abs_values'].to_dict()
print(abs_dict)
Producción
{'e': 82, 'r': 175, 't': 42, 'x': 11, 'y': 7}
Conclusión
Hay varias formas en Python de convertir valores de diccionario a magnitud absoluta. La mayoría de ellos utilizan la función abs(). Los métodos incluyen el uso de bucle, comprensión de diccionario, mapa y lambda, constructor dict, bucles con comprensión de diccionario, comprensión de diccionario con actualización(), biblioteca numpy y, por último, la biblioteca pandas.
Hay un total de 8 métodos demostrados y la mayoría de ellos tienen la misma complejidad temporal de O(N) donde N es indicativo del número de pares clave-valor o el tamaño de los valores del diccionario que se procesan. .