Obtener la longitud del diccionario en Python

Los diccionarios en Python son una colección de pares de datos clave-valor. Estos se utilizan en muchas manipulaciones en Python y son una de las estructuras de datos más importantes en Python. Para calcular la longitud del diccionario, len()se utiliza el método integrado.

método len() en Python:

Este método incorporado toma un objeto de Python como argumento y devuelve la cantidad de elementos que contiene. Se puede usar en strings, listas, diccionarios, tuplas y conjuntos. Lo único que se debe anotar es que el argumento debe ser una secuencia o una colección.

Encontrar la longitud de un diccionario simple:

Considere los siguientes detalles de una persona:

Name:Steve
Age:30
Designation:Programmer

Esta información se puede denotar mediante un diccionario simple. Un diccionario simple contiene solo algunos pares clave-valor. No son muy complejos. Cuando len()se aplica el método, da directamente la respuesta. Da el número de entradas en el diccionario. Por ejemplo:

# Python program to find 
# length of the dictionary
  
  
# a simple dictionary
dict1 ={'Name':'Steve', 'Age':30, 'Designation':'Programmer'}
  
# using len() counts the
# number of entries
print("len() method :", len(dict1))
  
# using dict.keys() counts
# the no.of.keys in dictionary
print("len() method with keys() :", len(dict1.keys()))
  
# using dict.values() counts
# the no.of.valuess in dictionary
print("len() method with values():", len(dict1.values()))

Producción:

len() method : 3
len() method with keys() : 3
len() method with values(): 3

Encontrar la longitud del diccionario anidado:

Considere los siguientes detalles acerca de una persona:

Name:Steve
Age:30
Designation:Programmer
address:
      Street:Brigade  Road
      City:Bangalore
      Country:India

Este tipo de información se puede representar mediante diccionarios anidados. Los diccionarios anidados contienen diccionarios dentro de diccionarios. En un par clave-valor, para una clave, otro diccionario puede ser el valor. En tales casos, si simplemente se pasa el diccionario al len()método, la salida no será correcta. Mira el código a continuación:

# Python program to find 
# length of the nested dictionary
  
  
# A nested dictionary
dict2 ={ # outer dictionary
       'Name':'Steve',
       'Age':30,
       'Designation':'Programmer',
       'address':{# inner dictionary
           'Street':'Brigade Road',
           'City':'Bangalore',
           'Country':'India'
         
                 }
      }
  
print("len() method :", len(dict2))
print("len() method with keys() :", len(dict2.keys()))
print("len() method with values():", len(dict2.values()))

Producción:

len() method : 4
len() method with keys() : 4
len() method with values(): 4

Aquí, cualquiera que sea el método que aplique, obtendrá solo ‘4’ como salida. Pero el número real de entradas es ‘7’. Las claves son nombre, edad, designación, dirección, calle, ciudad y país. El método considera el diccionario interno que es un valor para una de las claves como un valor único. Para superar este problema, debemos agregar explícitamente la longitud del diccionario interno al externo. Se puede codificar como se indica a continuación:

# Python program to find the
# length of the nested dictionary
  
  
# A nested dictionary
  
dict2 ={                   
       'Name':'Steve',
       'Age':30,
       'Designation':'Programmer',
       'address':
              {
           'Street':'Brigade Road',
           'City':'Bangalore',
           'Country':'India'
              }
      }
  
# total length = length of outer dict +
# length of inner dict
length = len(dict2)+len(dict2['address'])
  
print("The length of the nested dictionary is ", length)

Producción:

The length of the nested dictionary is  7

Ahora funciona bien!!!

Sin embargo, ¿es posible programar explícitamente para agregar la longitud de los diccionarios internos cada vez? ¿Qué pasa si no sabemos a priori cuántos diccionarios internos hay? Ahora considere el siguiente detalle:

Name:
    first name:Steve
    last name:Jobs
Age:30
Designation:Programmer
address:
      Street:Brigade  Road
      City:Bangalore
      Country:India

Aquí tenemos dos diccionarios internos. No es una forma optimizada de agregar explícitamente la longitud de los diccionarios internos cada vez. Podemos resolver este problema combinando isinstance()con el len()método.

método isinstance():

Este método toma dos argumentos. El primero es objeto . Necesitamos pasarle un objeto de Python. El objeto puede ser un int, un float, un iterable o cualquier cosa. El segundo argumento a pasar es tipo/clase . Denota el tipo/clase contra el cual se verifica el primer argumento para su instancia. Este método puede ayudarnos a encontrar la longitud de un diccionario anidado.

La idea es almacenar primero la longitud de todo el diccionario en una variable (por ejemplo, ‘longitud’ aquí) . Luego recorre todo el values()diccionario y verifica si es una instancia de dict. Si 'True'entonces se encuentra la longitud de ese diccionario interno y se agrega a la variable length. De esta forma se podría encontrar la longitud total de un diccionario anidado. El código de ejemplo se proporciona a continuación.

# Python program to find
# length of nested dictionary
  
  
# nested dictionary
dict2 ={
       'Name':
           {
               'first_name':'Steve',
               'Last_name':'Jobs'
           },
       'Age':30,
       'Designation':'Programmer',
       'address':
           {
           'Street':'Rockins Road',
           'City':'Bangalore',
           'Country':'India'
           }       
      }
  
# storing the outer dictionary length 
length = len(dict2)
  
# iterating to find the length
#  of all inner dictionaries
for i in dict2.values():
      
    # checking whether the value is a dictionary
    if isinstance(i, dict):
        length += len(i)
          
print("The length of the dictionary is", length)

Producción:

The length of the dictionary is  9

Si el diccionario está más profundamente anidado como se muestra a continuación:

Name:
    first name:Steve
    last name:Jobs
Age:30
Designation:Programmer
address:
      Street:
          St_number:4
          St_name:Brigade  Road
      City:Bangalore
      Country:India

Luego modifique el código como se indica a continuación:

# Python program to find 
# length of nested dictionary
  
  
# nested dictionary
dict2 ={
       'Name':
           {
               'first_name':'Steve',
               'Last_name':'Jobs'
           },
       'Age':30,
       'Designation':'Programmer',
       'address':
           {
           'Street':
               {
                   'st_number':4,
                   'st_name':'Rockins Road'
               },
           'City':'Bangalore',
           'Country':'India'
           }       
      }
  
# storing the outer dictionary length 
length = len(dict2)
  
# iterating to find the length 
# of all inner dictionaries
for i in dict2.values():
      
    # checking whether the value is a dictionary
    if isinstance(i, dict):
          
        # add the length of inner dictionary
        length += len(i)
          
        # check whether th inner dictionary
        # is further nested
        for j in i.values():
              
             if isinstance(j, dict):
                length += len(j)
          
print("The total length of the dictionary is ", length)

Producción:

The total length of the dictionary is  11

Publicación traducida automáticamente

Artículo escrito por erakshaya485 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 *