A veces, mientras trabajamos con diccionarios de Python, podemos tener un problema en el que necesitamos realizar un intercambio de jerarquía de diccionarios anidados. Este problema puede tener aplicación en dominios que requieren la reestructuración del diccionario. Analicemos ciertas formas en que se puede realizar esta tarea.
Entrada : test_dict = {‘Gfg’: { ‘a’: [1, 3, 7, 8], ‘b’: [4, 9], ‘c’: [0, 7]}}
Salida : {‘c ‘: {‘Gfg’: [0, 7]}, ‘b’: {‘Gfg’: [4, 9]}, ‘a’: {‘Gfg’: [1, 3, 7, 8]}}
Entrada : test_dict = {‘Gfg’: {‘mejor’: [1, 3, 4]}}
Salida : {‘mejor’: {‘Gfg’: [1, 3, 4]}}
Método #1: Usando loop + items()
La combinación de las funciones anteriores se puede usar para resolver este problema. En esto, iteramos el diccionario y reestructuramos usando fuerza bruta. El items() se usa para extraer todos los pares clave-valor del diccionario.
Python3
# Python3 code to demonstrate working of # Swapping Hierarchy in Nested Dictionaries # Using loop + items() # initializing dictionary test_dict = {'Gfg': { 'a' : [1, 3], 'b' : [3, 6], 'c' : [6, 7, 8]}, 'Best': { 'a' : [7, 9], 'b' : [5, 3, 2], 'd' : [0, 1, 0]}} # printing original dictionary print("The original dictionary : " + str(test_dict)) # Swapping Hierarchy in Nested Dictionaries # Using loop + items() res = dict() for key, val in test_dict.items(): for key_in, val_in in val.items(): if key_in not in res: temp = dict() else: temp = res[key_in] temp[key] = val_in res[key_in] = temp # printing result print("The rearranged dictionary : " + str(res))
El diccionario original: {‘Gfg’: {‘a’: [1, 3], ‘c’: [6, 7, 8], ‘b’: [3, 6]}, ‘Best’: {‘d ‘: [0, 1, 0], ‘a’: [7, 9], ‘b’: [5, 3, 2]}}
El diccionario reorganizado: {‘d’: {‘Best’: [0, 1, 0]}, ‘a’: {‘Gfg’: [1, 3], ‘Best’: [7, 9]}, ‘c’: {‘Gfg’: [6, 7, 8]}, ‘b’: {‘Gfg’: [3, 6], ‘Mejor’: [5, 3, 2]}}
Método #2: Usando defaultdict() + bucle
Esta es otra forma de fuerza bruta para resolver este problema. En esto, reducimos un paso de prueba clave usando defaultdict() en lugar de un diccionario convencional.
Python3
# Python3 code to demonstrate working of # Swapping Hierarchy in Nested Dictionaries # Using defaultdict() + loop from collections import defaultdict # initializing dictionary test_dict = {'Gfg': { 'a' : [1, 3], 'b' : [3, 6], 'c' : [6, 7, 8]}, 'Best': { 'a' : [7, 9], 'b' : [5, 3, 2], 'd' : [0, 1, 0]}} # printing original dictionary print("The original dictionary : " + str(test_dict)) # Swapping Hierarchy in Nested Dictionaries # Using defaultdict() + loop res = defaultdict(dict) for key, val in test_dict.items(): for key_in, val_in in val.items(): res[key_in][key] = val_in # printing result print("The rearranged dictionary : " + str(dict(res)))
El diccionario original: {‘Gfg’: {‘a’: [1, 3], ‘c’: [6, 7, 8], ‘b’: [3, 6]}, ‘Best’: {‘d ‘: [0, 1, 0], ‘a’: [7, 9], ‘b’: [5, 3, 2]}}
El diccionario reorganizado: {‘d’: {‘Best’: [0, 1, 0]}, ‘a’: {‘Gfg’: [1, 3], ‘Best’: [7, 9]}, ‘c’: {‘Gfg’: [6, 7, 8]}, ‘b’: {‘Gfg’: [3, 6], ‘Mejor’: [5, 3, 2]}}
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