A veces, al trabajar con los diccionarios de Python, uno puede tener un problema en el que necesita obtener la cantidad exacta de claves que están presentes en todos los diccionarios, incluidos los que están anidados. Analicemos ciertas formas en que se puede realizar esta tarea.
Método #1: Usar recursividad +items() + sum() + len()
Esta tarea se puede realizar usando la combinación de las funciones anteriores. En esto, verificamos si un anidado es un diccionario de not y luego extraemos sus claves usando items()
y luego sumamos la longitud de búsqueda usando las funciones respectivas.
# Python3 code to demonstrate working of # Get total keys in dictionary # Using recursion + items() + sum() + len() # Utility function to perform task def total_keys(test_dict): return (0 if not isinstance(test_dict, dict) else len(test_dict) + sum(total_keys(val) for val in test_dict.values())) # Initialize dictionary test_dict = { 'gfg' : { 'is' : 1, 'best' : { 'for' : {'geeks' :4}}}} # Printing original dictionary print("The original dictionary is : " + str(test_dict)) # Using recursion + items() + sum() + len() # Get total keys in dictionary res = total_keys(test_dict) # printing result print("Number of keys in dictionary is : " + str(res))
El diccionario original es: {‘gfg’: {‘best’: {‘for’: {‘geeks’: 4}}, ‘is’: 1}}
Número de claves en el diccionario es: 5
Método #2: Usando yield()
+ recursividad
Esta tarea también se puede realizar usando la combinación de las funciones anteriores. Esta es solo otra forma de realizar esta tarea. Se devuelve el resultado intermedio y, por lo tanto, este es un método más eficiente del 2.
# Python3 code to demonstrate working of # Get total keys in dictionary from collections import Mapping # Utility function to perform task def total_keys(test_dict): for key, value in test_dict.items(): if isinstance(value, Mapping): yield from total_keys(value) yield len(test_dict) # Initialize dictionary test_dict = { 'gfg' : { 'is' : 1, 'best' : { 'for' : {'geeks' :4}}}} # Printing original dictionary print("The original dictionary is : " + str(test_dict)) # Using yield() + recursion # Get total keys in dictionary res = sum(total_keys(test_dict)) # printing result print("Number of keys in dictionary is : " + str(res))
El diccionario original es: {‘gfg’: {‘best’: {‘for’: {‘geeks’: 4}}, ‘is’: 1}}
Número de claves en el diccionario es: 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