Získejte délku slovníku v Pythonu

Pro výpočet délky slovníku můžeme použít metodu len() vestavěnou v Pythonu. Metoda len() vrací počet klíčů v a Pythonský slovník .

Syntaxe len() Python Dict

Syntax: len(diktát)

Vrátit se: Vrací celé číslo, které je délkou řetězce.

Name:Steve Age:30 Designation:Programmer 

Základní příklad zjištění délky slovníku

Python3




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

Výstup:

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

Zjištění délky vnořeného slovníku

Zvažte následující podrobnosti o osobě:

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

Problém při hledání délky vnořeného slovníku:

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ýstup:
metoda len() s klíči () : 4
metoda len() s hodnotami(): 4

Zde, bez ohledu na to, kterou metodu použijete, získáte jako výstup pouze „4“. Ale skutečný počet záznamů je „7“. Klíči jsou jméno, věk, označení, adresa, ulice, město a země. Metoda považuje vnější slovník, který je hodnotou pro jeden z klíčů, za jedinou hodnotu.

Abychom tento problém překonali, musíme výslovně přidat délku vnitřního slovníku k vnějšímu. Může být kódován, jak je uvedeno níže:

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ýstup:

The length of the nested dictionary is: 7 

Teď to funguje dobře!!! Je však možné explicitně naprogramovat přidání délky vnitřních slovníků pokaždé? Co když předem nevíme, kolik vnitřních slovníků existuje? Nyní zvažte následující podrobnosti:

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

Zde máme dva vnitřní slovníky. Není to optimalizovaný způsob, jak pokaždé explicitně přidat délku vnitřních slovníků. Tento problém můžeme vyřešit kombinací isinstance() s metodou len(). Cílem je nejprve uložit délku celého slovníku do proměnné (zde řekněte ‚délka‘) . Poté projděte všechny hodnoty()ve slovníku a zkontrolujte, zda se jedná o instanci třídy dict. Li 'Skutečný' pak je nalezena délka tohoto vnitřního slovníku a přidána do proměnné délka . Tímto způsobem lze zjistit celkovou délku vnořeného slovníku.

Příklad 1: Dynamické zjištění délky vnořeného slovníku pomocí for-loop:

Když máme ve slovníku více klíčů, jejichž hodnoty jsou opět slovníky. Pak musíme zkontrolovat, zda je typ hodnoty každého klíče, pokud je to slovník, pak na hodnotu použijeme len() a přičteme hodnotu k délce vnějšího slovníku.

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ýstup:

The length of the dictionary is 9 

Poznámka: Tento přístup bude fungovat pouze tehdy, když je vnoření slovníků pouze do 2 úrovní.

Pokud je slovník dále hluboce vnořený, jak je uvedeno níže:

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

Příklad 2: Použití rekurze k nalezení délky vnořeného slovníku:

Zde jsme použili rekurzivní funkci count_nested_len() k počítání délky každého slovníku, iterujeme na klíčích slovníků, jakmile je hodnota slovníkem, tento slovník znovu 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ýstup:

Nested dictionary length: 11 

Přístup 3: Používání porozumění slovníku

Python3

# vnořený slovník
dict2 ={
'Název':
{
'křestní_jméno':'Steve',
‚Příjmení‘: ‚Zaměstnání‘
},
'Věk': 30,
'Označení': 'Programátor',
'adresa':
{
'Ulice':
{
‘st_number’:4,
‘st_name’:’Rockins Road’
},
'Město': 'Bangalore',
„Země“: „Indie“
}
}

# Použití porozumění slovníku k nalezení délky vnořeného slovníku
length = len({k: v for k, v in dict2.items()})

tisk (délka slovníku je, délka)
#Tento kód přispěl Edula Vinay Kumar Reddy

METODA 4: Použití generátorového výrazu s funkcí sum().

PŘÍSTUP:

Generátorový výraz se používá k vytvoření sekvence 1, kde každá 1 odpovídá klíči ve slovníku. Funkce sum() se pak použije k sečtení jedniček, což udává délku slovníku.

ALGORITMUS:

1. Vytvořte generátorový výraz, který generuje sekvenci jedniček pro každý klíč ve slovníku.
2. Pomocí funkce sum() sečtěte jedničky v sekvenci.
3.Vraťte součet, který představuje délku slovníku.

Python3




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

Výstup

3 

Časová složitost tohoto přístupu je O(n), kde n je počet klíčů ve slovníku.

Prostorová složitost tohoto přístupu je O(1)