logo

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




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)