Uzyskaj długość słownika w Pythonie

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:

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)>

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)>

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.

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)