Dado un diccionario anidado, realice la inversión de claves, es decir, el anidado más interno se convierte en el más externo y viceversa.
Entrada : test_dict = {“a”: {“b”: {}},
“d”: {“e”: {}},
“f”: {“g”: {}}
Salida : {‘b’: {‘a’: {}}, ‘e’: {‘d’: {}}, ‘g’: {‘f’: {}}
Explicación : diccionarios anidados invertidos como claves de diccionario externas y viz-a-vis.Entrada : test_dict = {“a”: {“b”: { “c”: {}}}}
Salida : {‘c’: {‘b’: {‘a’: {}}}}
Explicación : solo un llave única, mapeo invertido hasta profundidad.
Método: Usar bucle + recursividad
Esta es la forma bruta en la que se puede realizar esta tarea. En esto, extraemos todas las rutas de afuera hacia adentro para cada clave usando recursividad y luego usamos esto para revertir el orden en el resultado.
Python3
# Python3 code to demonstrate working of # Inversion in nested dictionary # Using loop + recursion # utility function to get all paths till end def extract_path(test_dict, path_way): if not test_dict: return [path_way] temp = [] for key in test_dict: temp.extend(extract_path(test_dict[key], path_way + [key])) return temp # function to compute inversion def hlper_fnc(test_dict): all_paths = extract_path(test_dict, []) res = {} for path in all_paths: front = res for ele in path[::-1]: if ele not in front : front[ele] = {} front = front[ele] return res # initializing dictionary test_dict = {"a" : {"b" : {"c" : {}}}, "d" : {"e" : {}}, "f" : {"g" : {"h" : {}}}} # printing original dictionary print("The original dictionary is : " + str(test_dict)) # calling helper function for task res = hlper_fnc(test_dict) # printing result print("The inverted dictionary : " + str(res))
The original dictionary is : {'a': {'b': {'c': {}}}, 'd': {'e': {}}, 'f': {'g': {'h': {}}}} The inverted dictionary : {'c': {'b': {'a': {}}}, 'e': {'d': {}}, 'h': {'g': {'f': {}}}}
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