Na výpočet dĺžky slovníka môžeme použiť metódu len() vstavanú v Pythone. Metóda len() vráti počet kľúčov v a Pythonský slovník .
Syntax len() Python Dict
Syntax: len(diktát)
Návrat: Vráti celé číslo, ktoré je dĺžkou reťazca.
Name:Steve Age:30 Designation:Programmer>
Základný príklad zisťovania dĺžky slovníka
Python3
dict1>=>{>'Name'>:>'Steve'>,>'Age'>:>30>,>'Designation'>:>'Programmer'>}> print>(>'Dictionary:'>, dict1)> print>(>'Length of dictionary:'>,>len>(dict1))> |
>
>
Výkon:
Dictionary: {'Name': 'Steve', 'Age': 30, 'Designation': 'Programmer'} Length of dictionary: 3> Nájdenie dĺžky vnoreného slovníka
Zvážte nasledujúce podrobnosti o osobe:
Name:Steve Age:30 Designation:Programmer address: Street:Brigade Road City:Bangalore Country:India>
Problém pri hľadaní dĺžky vnoreného slovníka:
Python3
výmena pamäte
# 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()))> |
>
>
Výkon:
metóda len() s kľúčmi () : 4
metóda len() s hodnotami(): 4
Tu, bez ohľadu na to, ktorú metódu použijete, dostanete ako výstup iba „4“. Ale skutočný počet záznamov je „7“. Kľúčmi sú meno, vek, označenie, adresa, ulica, mesto a krajina. Metóda považuje vonkajší slovník, ktorý je hodnotou pre jeden z kľúčov, za jednu hodnotu.
Aby sme tento problém prekonali, musíme explicitne pridať dĺžku vnútorného slovníka k vonkajšiemu. Môže byť kódovaný, ako je uvedené nižšie:
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)> |
vek sara ali khan
>
>
Výkon:
The length of the nested dictionary is: 7>
Teraz to funguje dobre!!! Je však možné explicitne naprogramovať pridanie dĺžky vnútorných slovníkov zakaždým? Čo ak predtým nevieme, koľko vnútorných slovníkov existuje? Teraz zvážte nasledujúce podrobnosti:
Name: first name:Steve last name:Jobs Age:30 Designation:Programmer address: Street:Brigade Road City:Bangalore Country:India>
Tu máme dva vnútorné slovníky. Nie je to optimalizovaný spôsob, ako vždy explicitne pridať dĺžku vnútorných slovníkov. Tento problém môžeme vyriešiť kombináciou metódy isinstance() s metódou len(). Cieľom je najprv uložiť dĺžku celého slovníka do premennej (tu povedzte „dĺžka“) . Potom iterujte cez všetky hodnoty ()v slovníku a skontrolujte, či ide o inštanciu slova dict. Ak „pravda“ potom sa nájde dĺžka tohto vnútorného slovníka a pridá sa k premennej dĺžka . Týmto spôsobom je možné zistiť celkovú dĺžku vnoreného slovníka.
Príklad 1: Dynamické nájdenie dĺžky vnoreného slovníka pomocou for-loop:
Keď máme v slovníku viac kľúčov, ktorých hodnoty sú opäť slovníky. Potom musíme skontrolovať, či je typ hodnoty každého kľúča, ak je to slovník, potom na hodnotu použijeme len() a pripočítame hodnotu k dĺžke vonkajšieho slovníka.
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)> |
>
rr algoritmus
>
Výkon:
The length of the dictionary is 9>
Poznámka: Tento prístup bude fungovať len vtedy, keď je vnorenie slovníkov iba do 2 úrovní.
Ak je slovník ďalej hlboko vnorený, ako je uvedené nižšie:
Name: first name:Steve last name:Jobs Age:30 Designation:Programmer address: Street: St_number:4 St_name:Brigade Road City:Bangalore Country:India>
Príklad 2: Použitie rekurzie na nájdenie dĺžky vnoreného slovníka:
Tu sme použili rekurzívnu funkciu count_nested_len() na počítanie dĺžky každého slovníka, iterujeme na kľúčoch slovníkov, akonáhle je hodnota slovníkom, tento slovník znova použijeme.
Python3
# 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))> |
>
>
Výkon:
čo je const v jave
Nested dictionary length: 11>
Prístup 3: Používanie slovníka
Python3
# vnorený slovník
dict2 ={
'Názov':
{
‘first_name’: ‘Steve’,
‚Priezvisko‘: ‚Práca‘
},
'Vek': 30,
„Označenie“: „Programátor“,
'adresa':
{
'Ulica':
{
‘st_number’:4,
‘st_name’:’Rockins Road’
},
„Mesto“: „Bangalore“,
„Krajina“: „India“
}
}
# Použitie porozumenia slovníka na nájdenie dĺžky vnoreného slovníka
dĺžka = len({k: v pre k, v v dict2.items()})
tlač (dĺžka slovníka je, dĺžka)
#Tento kód prispel Edula Vinay Kumar Reddy
METÓDA 4: Použitie výrazu generátora s funkciou sum().
PRÍSTUP:
Generátorový výraz sa používa na vytvorenie sekvencie 1, kde každá 1 zodpovedá kľúču v slovníku. Funkcia sum() sa potom použije na sčítanie 1, čo udáva dĺžku slovníka.
ALGORITHM:
1. Vytvorte výraz generátora, ktorý generuje sekvenciu 1 pre každý kľúč v slovníku.
2. Použite funkciu sum() na sčítanie 1 v sekvencii.
3.Vráťte súčet, ktorý predstavuje dĺžku slovníka.
Python3
dict1>=> {>'Name'>:>'Steve'>,>'Age'>:>30>,>'Designation'>:>'Programmer'>}> length>=> sum>(>1> for> key>in> dict1)> print>(length)> |
>
>Výkon
3>
Časová zložitosť tohto prístupu je O(n), kde n je počet kľúčov v slovníku.
Priestorová zložitosť tohto prístupu je O(1)