A veces, mientras trabajamos con Python, podemos tener un problema en el que necesitamos trabajar con datos de gráficos representados en forma de diccionario. En esto, es posible que debamos verificar todos los Nodes de hoja y no principales. Este tipo de problema tiene aplicaciones directas en algoritmos de Machine Learning. Analicemos una forma en que se puede realizar esta tarea.
Entrada : test_dict = {‘Gfg’: {‘is’: 2, ‘best’: 1}}
Salida : {‘leaf’: 2, ‘non-leaf’: 1}
Entrada : test_dict = {‘Gfg’: { ‘mejor’: 2}}
Salida : {‘no hoja’: 1, ‘hoja’: 1}
Método: Usando recursión + isinstance() + loop
La combinación de las funcionalidades anteriores se puede usar para resolver este problema. En esto, recurrimos al anidamiento interno usando recursividad y verificamos hojas o no hojas por tipos de valor usando isinstance().
Python3
# Python3 code to demonstrate working of # Leaf and Non-Leaf Nodes Dictionary # Using recursion + isinstance() + loop def hlpr_fnc(dict1, res = {'non-leaf':0, 'leaf':0}): #res['non-leaf'] += 1 nodes = dict1.keys() for node in nodes: subnode = dict1[node] if isinstance(subnode, dict): res['non-leaf'] += 1 hlpr_fnc(subnode, res) else: res['leaf'] += 1 return res # initializing dictionary test_dict = {'a': {'b': 1, 'c': {'d': {'e': 2, 'f': 1}}, 'g': {'h': {'i': 2, 'j': 1}}}} # printing original dictionary print("The original dictionary : " + str(test_dict)) # Leaf and Non-Leaf Nodes Dictionary # Using recursion + isinstance() + loop res = hlpr_fnc(test_dict) # printing result print("The leaf and Non-Leaf nodes : " + str(res))
Producción:
The original dictionary : {'a': {'b': 1, 'c': {'d': {'e': 2, 'f': 1}}, 'g': {'h': {'i': 2, 'j': 1}}}} The leaf and Non-Leaf nodes : {'non-leaf': 5, 'leaf': 5}
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