logo

Hämta längden på ordboken i Python

För att beräkna längden på en ordbok kan vi använda Python inbyggda len()-metoden. Metoden len() returnerar antalet nycklar i a Python ordbok .

Python Dict len() Syntax

Syntax: len(dikt)



Lämna tillbaka: Det returnerar ett heltal som är längden på strängen.

Name:Steve Age:30 Designation:Programmer>

Grundläggande exempel på att hitta längden på en ordbok

Python3




java arkitektur





dict1>=>{>'Name'>:>'Steve'>,>'Age'>:>30>,>'Designation'>:>'Programmer'>}> print>(>'Dictionary:'>, dict1)> print>(>'Length of dictionary:'>,>len>(dict1))>

>

>

Produktion:

Dictionary: {'Name': 'Steve', 'Age': 30, 'Designation': 'Programmer'} Length of dictionary: 3>

Hitta längden på kapslad ordbok

Tänk på följande detaljer om en person:

Name:Steve Age:30 Designation:Programmer address: Street:Brigade Road City:Bangalore Country:India>

Problem när du försöker hitta längden på kapslad ordbok:

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

>

>

Produktion:
len() metod med nycklar(): 4
len() metod med värden(): 4

Här, vilken metod du än använder, får du bara '4' som utdata. Men det faktiska antalet poster är '7'. Nycklarna är namn, ålder, beteckning, adress, gata, stad och land. Metoden betraktar den yttre ordboken som är ett värde för en av nycklarna som ett enda värde.

För att övervinna detta problem måste vi uttryckligen lägga till längden på den inre ordboken till den yttre. Det kan kodas enligt nedan:

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

>

>

Produktion:

The length of the nested dictionary is: 7>

Nu funkar det bra!!! Men är det möjligt att explicit programmera att lägga till längden på inre ordböcker varje gång? Vad händer om vi inte tidigare vet hur många inre ordböcker som finns? Tänk nu på följande detalj:

Name: first name:Steve last name:Jobs Age:30 Designation:Programmer address: Street:Brigade Road City:Bangalore Country:India>

Här har vi två inre ordböcker. Det är inte ett optimerat sätt att explicit lägga till längden på de inre ordböckerna varje gång. Vi kan lösa detta problem genom att kombinera isinstance() med metoden len(). Tanken är att först lagra längden på hela ordboken i en variabel (säg 'längd' här) . Iterera sedan igenom alla värden() i ordboken och kontrollera om det är en instans av dict. Om 'Sann' sedan hittas längden på den inre ordboken och läggs till variabeln längd . På så sätt kunde den totala längden av en kapslad ordbok hittas.

Exempel 1: Hitta längden på kapslad ordbok dynamiskt med for-loop:

När vi har fler nycklar i en ordbok vars värden återigen är ordböcker. Sedan måste vi kontrollera om typen av värde för varje nyckel, om det är en ordbok, så använder vi len() på värdet och lägger till värdet till längden på den yttre ordboken.

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

>

>

Produktion:

The length of the dictionary is 9>

Notera: Det här tillvägagångssättet kommer bara att fungera när kapslingen av ordböckerna bara är upp till 2 nivåer.

Om ordboken är ytterligare djupt kapslad som nedan:

Name: first name:Steve last name:Jobs Age:30 Designation:Programmer address: Street: St_number:4 St_name:Brigade Road City:Bangalore Country:India>

Exempel 2: Använda rekursion för att hitta längden på kapslad ordbok:

Här har vi använt en rekursiv funktion count_nested_len() för att räkna längden på varje ordbok, vi itererar på nycklarna till ordböcker, så fort ett värde är en ordbok, återgår vi till den ordboken.

Python3


textomslag css



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

>

>

Produktion:

Nested dictionary length: 11>

Metod 3: Använda ordboksförståelse

Python3

# kapslad ordbok
dict2 ={
'Namn':
{
'first_name': 'Steve',
'Last_name': 'Jobb'
},
'Ålder': 30,
'Designation': 'Programmer',
'adress':
{
'Gata':
{
'st_number':4,
'st_name': 'Rockins Road'
},
'Stad': 'Bangalore',
'Land': 'Indien'
}
}

# Använda ordboksförståelse för att hitta längden på den kapslade ordboken
length = len({k: v för k, v i dict2.items()})

print (Längden på ordboken är, längd)
#Denna kod är bidragit av Edula Vinay Kumar Reddy

METOD 4:Använda ett generatoruttryck med funktionen sum().

NÄRMA SIG:

Ett generatoruttryck används för att skapa en sekvens av 1:or, där varje 1:a motsvarar en nyckel i ordboken. Sum()-funktionen används sedan för att lägga ihop 1:orna, vilket ger längden på ordboken.

ALGORITM:

1.Skapa ett generatoruttryck som genererar en sekvens av 1:or för varje nyckel i ordboken.
2.Använd funktionen sum() för att lägga ihop 1:orna i sekvensen.
3. Returnera summan, som representerar längden på ordboken.

Python3




dict1>=> {>'Name'>:>'Steve'>,>'Age'>:>30>,>'Designation'>:>'Programmer'>}> length>=> sum>(>1> for> key>in> dict1)> print>(length)>

>

>

Produktion

3>

Tidskomplexiteten för detta tillvägagångssätt är O(n), där n är antalet nycklar i ordboken.

Rymdkomplexiteten för detta tillvägagångssätt är O(1)