logo

Získajte dĺžku slovníka v Pythone

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)