Python | Obtener claves totales en el diccionario

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))
Producción :

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))
Producción :

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *