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))
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