A veces, mientras trabajamos con datos, podemos tener un problema en el que necesitamos convertir el diccionario anidado en Matrix, cada anidamiento comprende una fila diferente en la array. Esto puede tener aplicación en muchos dominios de datos. Analicemos ciertas formas en que se puede realizar esta tarea.
Método #1: Usando loop + zip() + map()
La combinación de las funciones anteriores se puede usar para realizar esta tarea. En esto, usamos la fuerza bruta para aplanar las claves del diccionario y luego usamos map() y zip() para alinearlas como filas de array.
Python3
# Python3 code to demonstrate working of # Flatten Nested Dictionary to Matrix # using zip() + loop + map() # initializing dictionary test_dict = {'Gfg1' : {'CS':1, 'GATE' : 2}, 'Gfg2' : {'CS':2, 'GATE' : 3}, 'Gfg3' : {'CS':4, 'GATE' : 5}} # printing original dictionary print("The original dictionary is : " + str(test_dict)) # Flatten Nested Dictionary to Matrix # using zip() + loop + map() temp = list(test_dict.values()) sub = set() for ele in temp: for idx in ele: sub.add(idx) res = [] res.append(sub) for key, val in test_dict.items(): temp2 = [] for idx in sub: temp2.append(val.get(idx, 0)) res.append(temp2) res = [[idx for idx, val in test_dict.items()]] + list(map(list, zip(*res))) # printing result print("The Grouped dictionary list is : " + str(res))
El diccionario original es: {‘Gfg3’: {‘GATE’: 5, ‘CS’: 4}, ‘Gfg1’: {‘GATE’: 2, ‘CS’: 1}, ‘Gfg2’: {‘GATE’ : 3, ‘CS’: 2}}
La lista de diccionarios agrupados es: [[‘Gfg3’, ‘Gfg1’, ‘Gfg2’], [‘GATE’, 5, 2, 3], [‘CS’, 4, 1, 2]]
Método #2: Uso de union() + comprensión de lista
La combinación de los métodos anteriores se puede utilizar para realizar esta tarea. En esto, calculamos la unión usando union() en lugar de los bucles anidados. El resultado se compila utilizando la comprensión de listas.
Python3
# Python3 code to demonstrate working of # Flatten Nested Dictionary to Matrix # using union() + list comprehension # initializing dictionary test_dict = {'Gfg1' : {'CS':1, 'GATE' : 2}, 'Gfg2' : {'CS':2, 'GATE' : 3}, 'Gfg3' : {'CS':4, 'GATE' : 5}} # printing original dictionary print("The original dictionary is : " + str(test_dict)) # Flatten Nested Dictionary to Matrix # using union() + list comprehension temp = set().union(*test_dict.values()) res = [list(test_dict.keys())] res += [[key] + [sub.get(key, 0) for sub in test_dict.values()] for key in temp] # printing result print("The Grouped dictionary list is : " + str(res))
El diccionario original es: {‘Gfg3’: {‘GATE’: 5, ‘CS’: 4}, ‘Gfg1’: {‘GATE’: 2, ‘CS’: 1}, ‘Gfg2’: {‘GATE’ : 3, ‘CS’: 2}}
La lista de diccionarios agrupados es: [[‘Gfg3’, ‘Gfg1’, ‘Gfg2’], [‘GATE’, 5, 2, 3], [‘CS’, 4, 1, 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