Python: combinaciones de diccionarios anidados

A veces, mientras trabajamos con diccionarios de Python, podemos tener un problema en el que necesitamos construir todas las combinaciones de claves de diccionario con diferentes valores. Este problema puede tener aplicación en dominios como los juegos y la programación día a día. Vamos a discutir cierta forma en que podemos realizar esta tarea.

Entrada : test_dict = {‘gfg’: {‘is’: [6], ‘for’: [10], ‘best’: [4]}}
Salida : {‘gfg0’: {‘for’: 10, ‘ mejor’: 4, ‘es’: 6}}

Entrada : test_dict = {‘gfg’: {‘mejor’: [10]}}
Salida : {‘gfg0’: {‘mejor’: 10}}

Método: Usoproduct() + dictionary comprehension + zip()
La combinación de las funciones anteriores se puede utilizar para resolver este problema. En esto, extraemos todas las combinaciones posibles usando product, zip() realiza la tarea de emparejar claves con valores filtrados y la comprensión del diccionario se usa para almacenar todos los diccionarios construidos.

# Python3 code to demonstrate working of 
# Nested dictionary Combinations
# Using product() + dictionary comprehension + zip()
from itertools import product
  
# initializing dictionary
test_dict = {'gfg': {'is' : [6, 7, 8], 'best': [1, 9, 4]}}
  
# printing original dictionary
print("The original dictionary : " + str(test_dict))
  
# Nested dictionary Combinations
# Using product() + dictionary comprehension + zip()
res = { key + str(j) : dict(zip(val.keys(), k))
        for key, val in test_dict.items()
        for j, k in enumerate(product(*val.values()))}
  
# printing result 
print("The possible combinations : " + str(res)) 
Producción :

El diccionario original: {‘gfg’: {‘is’: [6, 7, 8], ‘best’: [1, 9, 4]}}
Las combinaciones posibles: {‘gfg5’: {‘is’: 7 , ‘mejor’: 4}, ‘gfg3’: {‘es’: 7, ‘mejor’: 1}, ‘gfg8’: {‘es’: 8, ‘mejor’: 4}, ‘gfg2’: {‘ es’: 6, ‘mejor’: 4}, ‘gfg6’: {‘es’: 8, ‘mejor’: 1}, ‘gfg0’: {‘es’: 6, ‘mejor’: 1}, ‘gfg1 ‘: {‘es’: 6, ‘mejor’: 9}, ‘gfg7’: {‘es’: 8, ‘mejor’: 9}, ‘gfg4’: {‘es’: 7, ‘mejor’: 9 }}

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 *