Sanakirjan pituuden laskemiseen voimme käyttää Pythonin sisäänrakennettua len()-menetelmää. Metodi len() palauttaa avainten määrän a:ssa Python-sanakirja .
Python Dict len() Syntaksi
Syntaksi: len (Dict)
Palata: Se palauttaa kokonaisluvun, joka on merkkijonon pituus.
tiedostopääte java
Name:Steve Age:30 Designation:Programmer>
Perusesimerkki sanakirjan pituuden selvittämisestä
Python 3
dict1>=>{>'Name'>:>'Steve'>,>'Age'>:>30>,>'Designation'>:>'Programmer'>}> print>(>'Dictionary:'>, dict1)> print>(>'Length of dictionary:'>,>len>(dict1))> |
>
>
Lähtö:
Dictionary: {'Name': 'Steve', 'Age': 30, 'Designation': 'Programmer'} Length of dictionary: 3> Sisäkkäisen sanakirjan pituuden etsiminen
Harkitse seuraavia yksityiskohtia henkilöstä:
Name:Steve Age:30 Designation:Programmer address: Street:Brigade Road City:Bangalore Country:India>
Ongelma yritettäessä löytää sisäkkäisen sanakirjan pituutta:
Python 3
# 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()))> |
>
>
Lähtö:
len()-menetelmä avaimilla() : 4
len()-menetelmä arvoilla(): 4
Riippumatta siitä, mitä menetelmää käytät, saat tulokseksi vain '4'. Mutta todellinen merkintöjen määrä on '7'. Näppäimet ovat nimi, ikä, nimi, osoite, katu, kaupunki ja maa. Menetelmä pitää ulompaa sanakirjaa, joka on yhden avaimen arvo, yhtenä arvona.
Tämän ongelman ratkaisemiseksi meidän on erikseen lisättävä sisäisen sanakirjan pituus ulompaan sanakirjaan. Se voidaan koodata seuraavasti:
Python 3
# 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)> |
>
>
Lähtö:
The length of the nested dictionary is: 7>
Nyt toimii hyvin!!! Onko kuitenkin mahdollista erikseen ohjelmoida lisäämään sisäisten sanakirjojen pituus joka kerta? Entä jos emme tiedä etukäteen, kuinka monta sisäistä sanakirjaa on olemassa? Harkitse nyt seuraavia yksityiskohtia:
Name: first name:Steve last name:Jobs Age:30 Designation:Programmer address: Street:Brigade Road City:Bangalore Country:India>
Tässä meillä on kaksi sisäistä sanakirjaa. Se ei ole optimoitu tapa lisätä sisäisten sanakirjojen pituutta joka kerta. Voimme ratkaista tämän ongelman yhdistämällä isinstance()- ja len()-menetelmän. Ajatuksena on ensin tallentaa koko sanakirjan pituus muuttujaan (sano 'pituus' tähän) . Toista sitten sanakirjan kaikki arvot() ja tarkista, onko kyseessä dict-esiintymä. Jos 'Totta' sitten tuon sisäisen sanakirjan pituus löydetään ja lisätään muuttujaan pituus . Tällä tavalla sisäkkäisen sanakirjan kokonaispituus voitaisiin löytää.
Esimerkki 1: Sisäkkäisen sanakirjan pituuden etsiminen dynaamisesti käyttämällä for-silmukkaa:
Kun sanakirjassa on enemmän avaimia, joiden arvot ovat jälleen sanakirjoja. Sitten meidän on tarkistettava, onko kunkin avaimen arvon tyyppi, jos se on sanakirja, niin käytämme arvossa len() ja lisäämme arvon ulomman sanakirjan pituuteen.
Python 3
# 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)> |
>
>
Lähtö:
The length of the dictionary is 9>
Huomautus: Tämä lähestymistapa toimii vain, kun sanakirjojen sisäkkäisyys on enintään 2 tasoa.
Jos sanakirja on syvälle sisäkkäin, kuten alla:
Name: first name:Steve last name:Jobs Age:30 Designation:Programmer address: Street: St_number:4 St_name:Brigade Road City:Bangalore Country:India>
Esimerkki 2: Rekursion käyttäminen sisäkkäisen sanakirjan pituuden etsimiseen:
Tässä olemme käyttäneet rekursiivista funktiota count_nested_len() laskeaksemme kunkin sanakirjan pituuden, iteroimme sanakirjojen näppäimillä. Heti kun arvo on sanakirja, käytämme sanakirjaa uudelleen.
Python 3
Valitse useista taulukoista sql
# 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))> |
>
>
Lähtö:
Nested dictionary length: 11>
Lähestymistapa 3: Sanakirjan ymmärtäminen
Python 3
# sisäkkäinen sanakirja
dict2 ={
'Nimi':
{
'first_name': 'Steve',
'Sukunimi': 'Työt'
},
'Ikä': 30,
'Nimitys': 'Ohjelmoija',
'osoite':
{
'Katu':
{
'st_number':4,
'st_name': 'Rockins Road'
},
'Kaupunki': 'Bangalore',
'Maa': 'Intia'
}
}
# Sanakirjan ymmärtäminen sisäkkäisen sanakirjan pituuden selvittämiseksi
pituus = len({k: v k:lle, v in dict2.items()})
tulosta (sanakirjan pituus on, pituus)
#Tämän koodin on tuottanut Edula Vinay Kumar Reddy
MENETELMÄ 4: Generaattorilausekkeen käyttö summa()-funktion kanssa.
LÄHESTYÄ:
Generaattorilauseketta käytetään luomaan ykkösten sekvenssi, jossa jokainen 1 vastaa avainta sanakirjassa. Sum()-funktiota käytetään sitten laskemaan yhteen luvut, jotka antavat sanakirjan pituuden.
ALGORITMI:
1.Luo generaattorilauseke, joka luo ykkösten sekvenssin jokaiselle sanakirjan avaimelle.
2. Käytä summa()-funktiota laskeaksesi yhteen sarjan luvut.
3.Palauta summa, joka edustaa sanakirjan pituutta.
Python 3
lateksipöytä
dict1>=> {>'Name'>:>'Steve'>,>'Age'>:>30>,>'Designation'>:>'Programmer'>}> length>=> sum>(>1> for> key>in> dict1)> print>(length)> |
>
>Lähtö
3>
Tämän lähestymistavan aikamonimutkaisuus on O(n), missä n on avainten lukumäärä sanakirjassa.
Tämän lähestymistavan avaruusmonimutkaisuus on O(1)