En este post voy a mostrar cómo Extraer un subconjunto de un diccionario en Python para realizar tareas con diccionarios.
Extraer subconjuntos de un diccionario en Python
Digamos que tenemos el siguiente diccionario Python con una serie de productos y sus precios y necesitamos realizar diferentes extracciones de datos según la necesidad.
precios = {
'Camisas': 43.23,
'Zapatos': 246.78,
'Camisolas': 205.55,
'Gorras': 37.20,
'Sandalias': 12.75
}
Dictionary Comprehension
La forma más fácil de extraer un subconjunto de un diccionario es a tráves de dictionary comprehension. Entonces en el siguiente ejemplo vamos a pedir a Python que extriaga un subset del diccionario precios con la condición de extraer solamente los valores de precio mayor a 200.
p = { key:value for key, value in precios.items() if value > 200 }
El código anterior nos da como resultado aquellos items con un precio superior a 200.
{'Zapatos': 246.78, 'Camisolas': 205.55}
Ahora queremos un extraer un diccionario a partir del diccionario precios, sin embargo vamos a extraer solamente los items que coincidan con los valores definidos por nosotros.
nombres = { 'Camisas', 'Zapatos', 'Gorras' }
p2 = { key:value for key,value in precios.items() if key in nombres }
En el ejemplo anterior creamos un set llamado nombres, en donde almacenamos todos los items a buscar. Luego hacemos uso de dictionary comprehension para extraer los items. Dando como resultado:
{'Camisas': 43.23, 'Zapatos': 246.78, 'Gorras': 37.2}
El siguiente ejemplo es extraer un los valores de un diccionario cuyo valor sea el mismo, los items extraídos se almacenan en otro diccionario.
precios = {
'Camisas': 43.23,
'Zapatos': 216.18,
'Camisolas': 205.55,
'Gorras': 37.20,
'Sandalias': 216.18
}
p = { key:value for key, value in precios.items() if value ==216.18 }
print(p)
De ésta manera hemos logrado extraer los items que comparten un mismo precio o puede ser cualquier otro tipo de descripción.
Otra forma de extraer un subconjunto o diccionario de un diccionario es crear un conjunto de tuplas y luego pasarlas con la función dict(). Entonces hacemos dictionary comprehension de la siguiente manera:
p1 = dict((key, value) for key, value in precios.items() if value > 200)
Sin embargo es preferible usar dictionary comprehension que éste último método.
Sumar los valores del subset extraído
Después que hemos extraído los items con el mismo valor, podemos hacer algún tipo de cálculo como sumar. Mira el siguiente ejemplo:
precios = {
'Camisas': 43.23,
'Zapatos': 216.18,
'Camisolas': 205.55,
'Gorras': 37.20,
'Sandalias': 216.18
}
p = {key: value for key, value in precios.items() if value == 216.18}
total_sum = sum(p.values())
print(total_sum)
Hemos sumado los precios del subset que hemos obtenido. Copia y pega en el IDLE de Python.
Espero que los ejemplos mostrados te ayuden a extraer diccionarios o subconjuntos de un dicionario en Python. Después de la extracción podemos hacer cálculos diferentes de acuerdo a la necesidad de nuestra aplicación.