logo

Obtener la longitud del diccionario en Python

Para calcular la longitud de un diccionario, podemos utilizar el método len() integrado en Python. El método len() devuelve el número de claves en un diccionario de pitón .

Sintaxis de Python Dict len()

Sintaxis: len(Dict)



Devolver: Devuelve un número entero que es la longitud de la cadena.

Name:Steve Age:30 Designation:Programmer>

Ejemplo básico de cómo encontrar la longitud de un diccionario.

Python3








dict1>=>{>'Name'>:>'Steve'>,>'Age'>:>30>,>'Designation'>:>'Programmer'>}> print>(>'Dictionary:'>, dict1)> print>(>'Length of dictionary:'>,>len>(dict1))>

>

>

Producción:

Dictionary: {'Name': 'Steve', 'Age': 30, 'Designation': 'Programmer'} Length of dictionary: 3>

Encontrar la longitud del diccionario anidado

Considere los siguientes detalles sobre una persona:

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

Problema al intentar encontrar la longitud del diccionario anidado:

Python3


formatear fecha en cadena



# 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:
Método len() con teclas(): 4
método len() con valores(): 4

Aquí, cualquiera que sea el método que aplique, obtendrá solo '4' como resultado. Pero el número real de entradas es '7'. Las claves son nombre, edad, denominación, dirección, calle, ciudad y país. El método considera el diccionario externo, que es un valor para una de las claves, como un valor único.

Para superar este problema, necesitamos agregar explícitamente la longitud del diccionario interno al externo. Se puede codificar como se indica a continuación:

Python3




# 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 antes cuántos diccionarios internos hay? Consideremos ahora 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 método len(). La idea es almacenar primero la longitud de todo el diccionario en una variable. (diga 'longitud' aquí) . Luego, repita todos los valores () del diccionario y verifique si es una instancia de dict. Si 'Verdadero' luego se encuentra la longitud de ese diccionario interno y se agrega a la variable longitud . De esta forma se podría encontrar la longitud total de un diccionario anidado.

Ejemplo 1: encontrar la longitud de un diccionario anidado dinámicamente usando el bucle for:

Cuando tenemos más claves en un diccionario cuyos valores son nuevamente diccionarios. Luego debemos verificar si el tipo de valor de cada clave, si es un diccionario, luego usamos len() en el valor y agregamos el valor a la longitud del diccionario externo.

Python3




# 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>

Nota: Este enfoque solo funcionará cuando el anidamiento de los diccionarios sea solo de hasta 2 niveles.

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>

Ejemplo 2: uso de recursividad para encontrar la longitud de un diccionario anidado:

Aquí hemos utilizado una función recursiva count_nested_len() para contar la longitud de cada diccionario, iteramos sobre las claves de los diccionarios, tan pronto como un valor es un diccionario, recusamos en ese diccionario.

Python3


cadena en c++



# 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'> >}> >}> # we use recursive function to count> # length of nested dictionaries> def> count_nested_len(d):> >length>=> len>(d)> >for> key, value>in> d.items():> >if> isinstance>(value,>dict>):> >length>+>=> count_nested_len(value)> >return> length> print>(>'Nested dictionary length:'>,> >count_nested_len(dict2))>

>

>

Producción:

Nested dictionary length: 11>

Enfoque 3: uso de la comprensión del diccionario

Python3

# diccionario anidado
dict2 ={
'Nombre':
{
'primer_nombre': 'Steve',
'Apellido': 'Trabajos'
},
'Edad': 30,
'Designación': 'Programador',
'DIRECCIÓN':
{
'Calle':
{
'número_st':4,
'st_name': 'Rockins Road'
},
'Ciudad': 'Bangalore',
'País': 'India'
}
}

# Usando la comprensión del diccionario para encontrar la longitud del diccionario anidado
longitud = len({k: v para k, v en dict2.items()})

imprimir (La longitud del diccionario es longitud)
#Este código es aportado por Edula Vinay Kumar Reddy

MÉTODO 4: Usar una expresión generadora con la función sum().

ACERCARSE:

Se utiliza una expresión generadora para crear una secuencia de 1, donde cada 1 corresponde a una clave en el diccionario. Luego, la función sum() se usa para sumar los unos, lo que da la longitud del diccionario.

ALGORITMO:

1.Cree una expresión generadora que genere una secuencia de unos para cada clave en el diccionario.
2.Utilice la función sum() para sumar los unos en la secuencia.
3.Devuelve la suma, que representa la longitud del diccionario.

Python3

¿Cómo encuentro aplicaciones ocultas en Android?




dict1>=> {>'Name'>:>'Steve'>,>'Age'>:>30>,>'Designation'>:>'Programmer'>}> length>=> sum>(>1> for> key>in> dict1)> print>(length)>

>

>

Producción

3>

La complejidad temporal de este enfoque es O(n), donde n es el número de claves en el diccionario.

La complejidad espacial de este enfoque es O (1)