Per calcular la longitud d'un diccionari, podem utilitzar el mètode len() integrat de Python. El mètode len() retorna el nombre de claus en a Diccionari Python .
Sintaxi Python Dict len().
Sintaxi: len (Dict)
Tornada: Retorna un nombre enter que és la longitud de la cadena.
Name:Steve Age:30 Designation:Programmer>
Exemple bàsic de trobar la longitud d'un diccionari
Python 3
dict1>=>{>'Name'>:>'Steve'>,>'Age'>:>30>,>'Designation'>:>'Programmer'>}> print>(>'Dictionary:'>, dict1)> print>(>'Length of dictionary:'>,>len>(dict1))> |
>
cadena java adjunta
>
Sortida:
Dictionary: {'Name': 'Steve', 'Age': 30, 'Designation': 'Programmer'} Length of dictionary: 3> Trobar la longitud del diccionari imbricat
Tingueu en compte els detalls següents sobre una persona:
Name:Steve Age:30 Designation:Programmer address: Street:Brigade Road City:Bangalore Country:India>
Problema en intentar trobar la longitud del diccionari imbricat:
Python 3
# 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()))> |
>
>
Sortida:
Mètode len() amb claus(): 4
Mètode len() amb valors(): 4
Aquí, sigui quin sigui el mètode que apliqueu, només obtindreu '4' com a sortida. Però el nombre real d'entrades és '7'. Les claus són nom, edat, designació, adreça, carrer, ciutat i país. El mètode considera el diccionari extern que és un valor per a una de les claus com un valor únic.
Per superar aquest problema, hem d'afegir explícitament la longitud del diccionari interior a l'exterior. Es pot codificar com es mostra a continuació:
Python 3
# 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)> |
>
>
Sortida:
The length of the nested dictionary is: 7>
Ara funciona bé!!! Tanmateix, és possible programar explícitament per afegir la longitud dels diccionaris interns cada vegada? Què passa si abans no sabem quants diccionaris interiors hi ha? Ara considereu el següent detall:
Name: first name:Steve last name:Jobs Age:30 Designation:Programmer address: Street:Brigade Road City:Bangalore Country:India>
Aquí tenim dos diccionaris interiors. No és una manera optimitzada d'afegir explícitament la longitud dels diccionaris interns cada vegada. Podem resoldre aquest problema combinant el mètode isinstance() amb len(). La idea és emmagatzemar primer la longitud de tot el diccionari en una variable (digueu 'longitud' aquí) . A continuació, itereu tots els valors () del diccionari i comproveu si és una instància de dict. Si 'Veritat' aleshores es troba la longitud d'aquest diccionari intern i s'afegeix a la variable llargada . D'aquesta manera, es podria trobar la longitud total d'un diccionari imbricat.
Exemple 1: trobar la longitud del diccionari imbricat de manera dinàmica mitjançant el bucle for:
Quan tenim més claus en un diccionari els valors del qual tornen a ser diccionaris. Aleshores hem de comprovar si el tipus de valor de cada clau, si és un diccionari, llavors fem servir len() al valor i afegim el valor a la longitud del diccionari extern.
Python 3
# 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)> |
>
>
Sortida:
The length of the dictionary is 9>
Nota: Aquest enfocament només funcionarà quan la nidificació dels diccionaris només sigui de 2 nivells.
Si el diccionari està més profundament imbricat com a continuació:
Name: first name:Steve last name:Jobs Age:30 Designation:Programmer address: Street: St_number:4 St_name:Brigade Road City:Bangalore Country:India>
Exemple 2: ús de la recursència per trobar la longitud del diccionari imbricat:
Aquí hem utilitzat una funció recursiva count_nested_len() per comptar la longitud de cada diccionari, iterem sobre les claus dels diccionaris, tan bon punt un valor és un diccionari, recusem en aquest diccionari.
Python 3
list.sort java
# 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))> |
>
>
Sortida:
Nested dictionary length: 11>
Enfocament 3: Ús de la comprensió del diccionari
Python 3
# diccionari imbricat
dict2 ={
'Nom':
{
'first_name':'Steve',
'Cognoms':'Ocupació'
},
'Edat': 30,
'Designació':'Programador',
'adreça':
{
‘Carrer’:
{
'st_number':4,
'st_name':'Rockins Road'
},
'Ciutat': 'Bangalore',
'País': 'Índia'
}
}
# Utilitzar la comprensió del diccionari per trobar la longitud del diccionari imbricat
longitud = len({k: v per a k, v en dict2.items()})
imprimir (La longitud del diccionari és, longitud)
#Aquest codi és aportat per Edula Vinay Kumar Reddy
MÈTODE 4: Ús d'una expressió generadora amb funció sum().
APROXIMACIÓ:
S'utilitza una expressió generadora per crear una seqüència d'1, on cada 1 correspon a una clau del diccionari. Aleshores s'utilitza la funció sum() per sumar els 1, que dóna la longitud del diccionari.
ALGORITME:
1.Creeu una expressió generadora que generi una seqüència d'1 per a cada clau del diccionari.
2.Utilitzeu la funció sum() per sumar els 1 de la seqüència.
3.Retorna la suma, que representa la longitud del diccionari.
Python 3
etiquetes html
dict1>=> {>'Name'>:>'Steve'>,>'Age'>:>30>,>'Designation'>:>'Programmer'>}> length>=> sum>(>1> for> key>in> dict1)> print>(length)> |
>
>Sortida
3>
La complexitat temporal d'aquest enfocament és O(n), on n és el nombre de claus del diccionari.
La complexitat espacial d'aquest enfocament és O(1)