Aby obliczyć długość słownika, możemy użyć wbudowanej w Pythona metody len(). Metoda len() zwraca liczbę kluczy w a Słownik Pythona .
Składnia Python Dict len().
Składnia: len (dykt)
Powrót: Zwraca liczbę całkowitą będącą długością ciągu.
Name:Steve Age:30 Designation:Programmer>
Podstawowy przykład wyznaczania długości słownika
Python3
dict1>=>{>'Name'>:>'Steve'>,>'Age'>:>30>,>'Designation'>:>'Programmer'>}> print>(>'Dictionary:'>, dict1)> print>(>'Length of dictionary:'>,>len>(dict1))> |
>
>
Wyjście:
strsep c
Dictionary: {'Name': 'Steve', 'Age': 30, 'Designation': 'Programmer'} Length of dictionary: 3> Znajdowanie długości zagnieżdżonego słownika
Rozważ następujące szczegóły dotyczące danej osoby:
Name:Steve Age:30 Designation:Programmer address: Street:Brigade Road City:Bangalore Country:India>
Problem podczas próby znalezienia długości zagnieżdżonego słownika:
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()))> |
>
>
Wyjście:
Metoda len() z kluczami() : 4
metoda len() z wartościami(): 4
Tutaj, niezależnie od metody, którą zastosujesz, jako wynik otrzymasz tylko „4”. Ale rzeczywista liczba wpisów to „7”. Klucze to imię i nazwisko, wiek, oznaczenie, adres, ulica, miasto i kraj. Metoda traktuje słownik zewnętrzny będący wartością jednego z kluczy jako pojedynczą wartość.
Aby przezwyciężyć ten problem, musimy jawnie dodać długość słownika wewnętrznego do słownika zewnętrznego. Można go zakodować w sposób podany poniżej:
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)> |
wymiana js
>
>
Wyjście:
The length of the nested dictionary is: 7>
Teraz działa dobrze!!! Czy jednak możliwe jest jawne zaprogramowanie za każdym razem dodawania długości słowników wewnętrznych? A co jeśli nie wiemy wcześniej, ile jest słowników wewnętrznych? Teraz rozważ następujący szczegół:
Name: first name:Steve last name:Jobs Age:30 Designation:Programmer address: Street:Brigade Road City:Bangalore Country:India>
Tutaj mamy dwa wewnętrzne słowniki. Nie jest to zoptymalizowany sposób, aby za każdym razem jawnie dodawać długość wewnętrznych słowników. Możemy rozwiązać ten problem, łącząc metodę isinstance() z metodą len(). Pomysł polega na tym, aby najpierw zapisać długość całego słownika w zmiennej (powiedz tutaj „długość”) . Następnie wykonaj iterację po wszystkich wartościach() słownika i sprawdź, czy jest to instancja dict. Jeśli 'PRAWDA' następnie zostaje znaleziona długość tego wewnętrznego słownika i dodana do zmiennej długość . W ten sposób można było znaleźć całkowitą długość zagnieżdżonego słownika.
Przykład 1: Dynamiczne znajdowanie długości zagnieżdżonego słownika przy użyciu pętli for:
Kiedy w słowniku mamy więcej kluczy, których wartości znów są słownikami. Następnie musimy sprawdzić, czy jest to typ wartości każdego klucza, czy jest to słownik, następnie używamy funkcji len() na wartości i dodajemy wartość do długości zewnętrznego słownika.
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)> |
>
warunek Java podczas
>
Wyjście:
The length of the dictionary is 9>
Notatka: To podejście będzie działać tylko wtedy, gdy zagnieżdżenie słowników obejmuje tylko do 2 poziomów.
Jeśli słownik jest bardziej głęboko zagnieżdżony, jak poniżej:
Name: first name:Steve last name:Jobs Age:30 Designation:Programmer address: Street: St_number:4 St_name:Brigade Road City:Bangalore Country:India>
Przykład 2: Użycie rekurencji do znalezienia długości zagnieżdżonego słownika:
Tutaj użyliśmy funkcji rekurencyjnej count_nested_len() do zliczenia długości każdego słownika, iterujemy po klawiszach słowników, gdy tylko wartość jest słownikiem, używamy tego słownika.
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))> |
>
>
Wyjście:
Nested dictionary length: 11>
Podejście 3: Korzystanie ze zrozumienia słownika
Python3
# zagnieżdżony słownik
dykt2 ={
'Nazwa':
{
„imię”: „Steve”,
„Nazwisko”: „Praca”
},
„Wiek”: 30,
„Oznaczenie”: „Programista”,
'adres':
{
'Ulica':
{
„st_number”:4,
„st_name”: „Rockins Road”
},
„Miasto”: „Bangalore”,
„Kraj”: „Indie”
}
}
# Używanie rozumienia słownika do znajdowania długości zagnieżdżonego słownika
długość = len({k: v dla k, v w dict2.items()})
print(Długość słownika to długość)
#Ten kod został napisany przez Edulę Vinay Kumar Reddy
METODA 4: Użycie wyrażenia generatora z funkcją sum().
ZBLIŻAĆ SIĘ:
Wyrażenie generatora służy do tworzenia sekwencji jedynek, gdzie każda jedynka odpowiada kluczowi w słowniku. Następnie używana jest funkcja sum() do dodawania jedynek, co daje długość słownika.
ALGORYTM:
1. Utwórz wyrażenie generatora, które generuje sekwencję jedynek dla każdego klucza w słowniku.
2. Użyj funkcji sum(), aby dodać jedyneki w sekwencji.
3.Zwróć sumę reprezentującą długość słownika.
kod Fibonacciego w Javie
Python3
dict1>=> {>'Name'>:>'Steve'>,>'Age'>:>30>,>'Designation'>:>'Programmer'>}> length>=> sum>(>1> for> key>in> dict1)> print>(length)> |
>
>Wyjście
3>
Złożoność czasowa tego podejścia wynosi O(n), gdzie n jest liczbą kluczy w słowniku.
Złożoność przestrzenna tego podejścia wynosi O (1)