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)