logo

Pridobite dolžino slovarja v Pythonu

Za izračun dolžine slovarja lahko uporabimo metodo len(), vgrajeno v Python. Metoda len() vrne število ključev v a Slovar Python .

Sintaksa Python Dict len().

Sintaksa: len (dikt)



Vrnitev: Vrne celo število, ki je dolžina niza.

java string format long
Name:Steve Age:30 Designation:Programmer>

Osnovni primer iskanja dolžine slovarja

Python3








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

>

>

Izhod:

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

Iskanje dolžine ugnezdenega slovarja

Razmislite o naslednjih podrobnostih o osebi:

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

Težava pri iskanju dolžine ugnezdenega slovarja:

Python3




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

>

>

Izhod:
metoda len() s tipkami(): 4
len() metoda z values(): 4

Tu ne glede na to, katero metodo uporabite, boste kot izhod dobili samo '4'. Toda dejansko število vnosov je '7'. Ključi so ime, starost, naziv, naslov, ulica, mesto in država. Metoda obravnava zunanji slovar, ki je vrednost za enega od ključev, kot eno samo vrednost.

Da bi rešili to težavo, moramo eksplicitno dodati dolžino notranjega slovarja zunanjemu. Lahko se kodira, kot je navedeno spodaj:

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

>

>

Izhod:

The length of the nested dictionary is: 7>

Sedaj deluje dobro!!! Vendar, ali je mogoče eksplicitno programirati, da se vsakič doda dolžina notranjih slovarjev? Kaj pa, če vnaprej ne vemo, koliko notranjih slovarjev obstaja? Zdaj razmislite o naslednji podrobnosti:

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

Tukaj imamo dva notranja slovarja. To ni optimiziran način, da vsakič izrecno dodate dolžino notranjih slovarjev. To težavo lahko rešimo s kombiniranjem metode isinstance() z metodo len(). Ideja je, da najprej shranimo dolžino celotnega slovarja v spremenljivko (tu povej 'dolžina') . Nato ponovite vse vrednosti()slovarja in preverite, ali je primerek dict. če 'Prav' potem se najde dolžina tega notranjega slovarja in doda spremenljivki dolžina . Na ta način je mogoče najti celotno dolžino ugnezdenega slovarja.

1. primer: dinamično iskanje dolžine ugnezdenega slovarja z zanko for:

Ko imamo več ključev v slovarju, katerih vrednosti so spet slovarji. Nato moramo preveriti, ali je vrsta vrednosti vsakega ključa, če gre za slovar, potem uporabimo len() za vrednost in dodamo vrednost dolžini zunanjega slovarja.

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

>

>

Izhod:

The length of the dictionary is 9>

Opomba: Ta pristop bo deloval le, če je gnezdenje slovarjev samo do 2 ravni.

Če je slovar nadalje globoko ugnezden, kot je prikazano spodaj:

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

2. primer: uporaba rekurzije za iskanje dolžine ugnezdenega slovarja:

Tukaj smo uporabili rekurzivno funkcijo count_nested_len() za štetje dolžine vsakega slovarja, ponavljamo ključe slovarjev, takoj ko je vrednost slovar, ponovno uporabimo ta slovar.

Python3


dekodiranje js base64



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

>

>

Izhod:

Nested dictionary length: 11>

Pristop 3 : Uporaba slovarskega razumevanja

Python3

# ugnezdeni slovar
dict2 ={
'Ime':
{
'first_name':'Steve',
'Last_name':'Zaposlitev'
},
'Starost': 30,
'Oznaka':'Programer',
'naslov':
{
'Ulica':
{
'st_število':4,
'st_name':'Rockins Road'
},
'Mesto': 'Bangalore',
'Država': 'Indija'
}
}

# Uporaba razumevanja slovarja za iskanje dolžine ugnezdenega slovarja
dolžina = len({k: v za k, v v dict2.items()})

natisni (Dolžina slovarja je, dolžina)
#To kodo je prispevala Edula Vinay Kumar Reddy

METODA 4: Uporaba generatorskega izraza s funkcijo sum().

PRISTOP:

Generatorski izraz se uporablja za ustvarjanje zaporedja 1, kjer vsaka 1 ustreza ključu v slovarju. Funkcija sum() se nato uporabi za seštevanje 1, kar poda dolžino slovarja.

ALGORITEM:

1. Ustvarite generatorski izraz, ki generira zaporedje 1 za vsak ključ v slovarju.
2. Uporabite funkcijo sum(), da seštejete 1 v zaporedju.
3. Vrni vsoto, ki predstavlja dolžino slovarja.

Python3

java točka




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

>

>

Izhod

3>

Časovna kompleksnost tega pristopa je O(n), kjer je n število ključev v slovarju.

Prostorska kompleksnost tega pristopa je O(1)