Norėdami apskaičiuoti žodyno ilgį, galime naudoti Python integruotą len() metodą. Metodas len() grąžina a raktų skaičių Python žodynas .
Python Dict len() Sintaksė
Sintaksė: len (diktas)
Grąžinti: Jis grąžina sveikąjį skaičių, kuris yra eilutės ilgis.
Name:Steve Age:30 Designation:Programmer>
Pagrindinis žodyno ilgio nustatymo pavyzdys
Python3
oracle sql nelygu
dict1>=>{>'Name'>:>'Steve'>,>'Age'>:>30>,>'Designation'>:>'Programmer'>}> print>(>'Dictionary:'>, dict1)> print>(>'Length of dictionary:'>,>len>(dict1))> |
>
>
Išvestis:
Dictionary: {'Name': 'Steve', 'Age': 30, 'Designation': 'Programmer'} Length of dictionary: 3> Įdėto žodyno ilgio paieška
Apsvarstykite šią informaciją apie asmenį:
Name:Steve Age:30 Designation:Programmer address: Street:Brigade Road City:Bangalore Country:India>
Problema bandant rasti įdėto žodyno ilgį:
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()))> |
>
>
Išvestis:
len() metodas su klavišais(): 4
len() metodas su reikšmėmis(): 4
Čia, nesvarbu, kurį metodą taikysite, kaip išvestį gausite tik „4“. Tačiau tikrasis įrašų skaičius yra „7“. Raktai yra vardas, amžius, pavadinimas, adresas, gatvė, miestas ir šalis. Šis metodas išorinį žodyną, kuris yra vieno iš raktų reikšmė, laiko viena reikšme.
Norėdami išspręsti šią problemą, turime aiškiai pridėti vidinio žodyno ilgį prie išorinio. Jis gali būti užkoduotas taip, kaip nurodyta toliau:
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)> |
>
>
Išvestis:
The length of the nested dictionary is: 7>
Dabar veikia gerai!!! Tačiau ar galima aiškiai užprogramuoti kiekvieną kartą pridėti vidinių žodynų ilgį? Ką daryti, jei iš anksto nežinome, kiek yra vidinių žodynų? Dabar apsvarstykite šią detalę:
Name: first name:Steve last name:Jobs Age:30 Designation:Programmer address: Street:Brigade Road City:Bangalore Country:India>
Čia turime du vidinius žodynus. Tai nėra optimizuotas būdas kiekvieną kartą aiškiai pridėti vidinių žodynų ilgį. Šią problemą galime išspręsti sujungę isinstance() su len() metodu. Idėja yra pirmiausia išsaugoti viso žodyno ilgį kintamajame (čia pasakykite „ilgis“) . Tada pakartokite visas žodyno reikšmes () ir patikrinkite, ar tai yra dikto pavyzdys. Jeigu 'Tiesa' tada randamas to vidinio žodyno ilgis ir pridedamas prie kintamojo ilgio . Tokiu būdu galima rasti visą įdėto žodyno ilgį.
1 pavyzdys: dinamiškas įdėto žodyno ilgio nustatymas naudojant for-ciklą:
Kai žodyne turime daugiau raktų, kurių reikšmės vėl yra žodynai. Tada turime patikrinti, ar kiekvieno rakto reikšmės tipas, jei tai žodynas, tada mes naudojame len() reikšmę ir pridedame reikšmę prie išorinio žodyno ilgio.
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)> |
>
>
Išvestis:
The length of the dictionary is 9>
Pastaba: Šis metodas veiks tik tada, kai žodynai yra tik iki 2 lygių.
Jei žodynas yra giliai įdėtas, kaip nurodyta toliau:
Name: first name:Steve last name:Jobs Age:30 Designation:Programmer address: Street: St_number:4 St_name:Brigade Road City:Bangalore Country:India>
2 pavyzdys: Rekursijos naudojimas norint rasti įdėto žodyno ilgį:
Čia mes panaudojome rekursinę funkciją count_nested_len(), kad suskaičiuotume kiekvieno žodyno ilgį, kartojame žodynų klavišus, kai tik reikšmė yra žodynas, mes vėl panaudojame tą žodyną.
Python3
pervardyti linux katalogą
# 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))> |
>
>
Išvestis:
Nested dictionary length: 11>
3 metodas: žodyno supratimo naudojimas
Python3
# įdėtas žodynas
dict2 ={
'Vardas':
{
„first_name“: „Stivas“,
„Pavardė“: „Darbai“
},
'Amžius': 30,
„Pavadinimas“: „Programuotojas“,
'adresas':
{
'Gatvė':
{
„st_number“:4,
„st_name“: „Rokinso kelias“
},
„Miestas“: „Bangalore“,
„Šalis“: „Indija“
}
}
# Naudodami žodyno supratimą, norėdami rasti įdėto žodyno ilgį
ilgis = len({k: v k, v dict2.items()})
spausdinti (žodyno ilgis yra, ilgis)
#Šį kodą sukūrė Edula Vinay Kumar Reddy
4 METODAS: Generatoriaus išraiškos naudojimas su sum() funkcija.
METODAS:
Generatoriaus išraiška naudojama norint sukurti 1 seką, kur kiekvienas 1 atitinka raktą žodyne. Tada funkcija sum() naudojama 1 sudėti, o tai nurodo žodyno ilgį.
ALGORITMAS:
1. Sukurkite generatoriaus išraišką, kuri sugeneruotų 1 seką kiekvienam žodyno raktui.
2. Naudodami funkciją sum() sudėkite sekos 1.
3.Grąžinkite sumą, kuri atitinka žodyno ilgį.
Python3
dict1>=> {>'Name'>:>'Steve'>,>'Age'>:>30>,>'Designation'>:>'Programmer'>}> length>=> sum>(>1> for> key>in> dict1)> print>(length)> |
>
>Išvestis
3>
Šio metodo sudėtingumas laike yra O(n), kur n yra raktų skaičius žodyne.
Šio metodo erdvinis sudėtingumas yra O (1)