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




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

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

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:

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)