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
strsep
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
co je objekt java
# 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)