logo

Få lengden på ordboken i Python

For å beregne lengden på en ordbok kan vi bruke Python innebygde len()-metoden. len()-metoden returnerer antall nøkler i en Python-ordbok .

Python Dict len() Syntaks

Syntaks: len(dikt)



Komme tilbake: Det returnerer et heltall som er lengden på strengen.

Name:Steve Age:30 Designation:Programmer>

Grunnleggende eksempel på å finne lengden på en ordbok

Python3








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

>

objekt i java-programmering
>

Produksjon:

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

Finne lengden på nestet ordbok

Tenk på følgende detaljer om en person:

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

Problem når du prøver å finne lengden på nestet 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()))>

skuespiller ranbir kapoor alder
>

>

Produksjon:
len()-metoden med nøkler(): 4
len()-metoden med verdier(): 4

Her, uansett hvilken metode du bruker, får du bare '4' som utgang. Men det faktiske antallet oppføringer er '7'. Nøklene er navn, alder, betegnelse, adresse, gate, by og land. Metoden betrakter den ytre ordboken som er en verdi for en av nøklene som en enkelt verdi.

For å overvinne dette problemet, må vi eksplisitt legge til lengden på den indre ordboken til den ytre. Den kan kodes som gitt nedenfor:

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

>

>

Produksjon:

The length of the nested dictionary is: 7>

Nå fungerer det bra!!! Men er det mulig å eksplisitt programmere for å legge til lengden på indre ordbøker hver gang? Hva om vi ikke tidligere vet hvor mange indre ordbøker som finnes? Vurder nå følgende detalj:

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

Her har vi to indre ordbøker. Det er ikke en optimalisert måte å eksplisitt legge til lengden på de indre ordbøkene hver gang. Vi kan løse dette problemet ved å kombinere isinstance() med len()-metoden. Tanken er først å lagre lengden på hele ordboken i en variabel (si 'lengde' her) . Iterér deretter gjennom alle verdiene() i ordboken og sjekk om det er en forekomst av dict. Hvis 'Ekte' så blir lengden på den indre ordboken funnet og lagt til variabelen lengde . På denne måten kunne den totale lengden på en nestet ordbok bli funnet.

Eksempel 1: Finne lengden på nestet ordbok dynamisk ved å bruke for-loop:

Når vi har flere nøkler i en ordbok hvis verdier igjen er ordbøker. Deretter må vi sjekke om verdien av hver nøkkel, hvis det er en ordbok, bruker vi len() på verdien og legger til verdien til lengden på den ytre ordboken.

np.unik

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

>

>

Produksjon:

The length of the dictionary is 9>

Merk: Denne tilnærmingen vil bare fungere når nesting av ordbøkene bare er opptil 2 nivåer.

Hvis ordboken er ytterligere dypt nestet som nedenfor:

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

Eksempel 2: Bruke rekursjon for å finne lengden på nestet ordbok:

Her har vi brukt en rekursiv funksjon count_nested_len() for å telle lengden på hver ordbok, vi itererer på nøklene til ordbøker, så snart en verdi er en ordbok, trekker vi tilbake på den ordboken.

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

vårramme
>

>

Produksjon:

Nested dictionary length: 11>

Tilnærming 3: Bruke ordbokforståelse

Python3

# nestet ordbok
dikt2 ={
'Navn':
{
'first_name': 'Steve',
'Last_name': 'Jobber'
},
'Alder': 30,
'Betegnelse': 'Programmer',
'adresse':
{
'Gate':
{
'st_number':4,
'st_name': 'Rockins Road'
},
'By': 'Bangalore',
«Land»: «India»
}
}

# Bruke ordbokforståelse for å finne lengden på den nestede ordboken
lengde = len({k: v for k, v i dict2.items()})

print (lengden på ordboken er, lengde)
#Denne koden er bidratt av Edula Vinay Kumar Reddy

METODE 4:Bruke et generatoruttrykk med sum() funksjon.

NÆRME SEG:

jdbc jdbc

Et generatoruttrykk brukes til å lage en sekvens av 1-er, der hver 1 tilsvarer en nøkkel i ordboken. Sum()-funksjonen brukes deretter til å legge sammen 1-tallet, som gir lengden på ordboken.

ALGORITME:

1. Lag et generatoruttrykk som genererer en sekvens på 1-er for hver nøkkel i ordboken.
2.Bruk sum()-funksjonen for å legge sammen 1-tallet i sekvensen.
3. Returner summen, som representerer lengden på ordboken.

Python3




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

>

>

Produksjon

3>

Tidskompleksiteten til denne tilnærmingen er O(n), der n er antall nøkler i ordboken.

Romkompleksiteten til denne tilnærmingen er O(1)