Slovar Python: Kako ga lahko uporabite za pisanje boljše kode

Slovar Python: Kako ga lahko uporabite za pisanje boljše kode

Slovar Python je podatkovna struktura, podobna asociativni matriki, ki jo najdemo v drugih programskih jezikih. Polje ali seznam indeksira elemente po položaju. Slovar pa elemente indeksira z ključe ki so lahko nizi. Slovar si predstavljajte kot neurejene sklope ključ-vrednost pari.





V tem članku vam predstavljamo delo s slovarjem python.





Ustvarjanje slovarja

Slovar python lahko ustvarite na več načinov. Najenostavnejša uporaba inicializacije oklepajev s sintakso, ki spominja na JSON.





users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}

Številke lahko uporabite tudi kot tipke. Vendar bodite previdni pri uporabi številk s plavajočo vejico kot tipk, saj jih računalnik shrani kot približke.

rain_percent = { 1980: '17%', 1981: '15%', 1982: '10%'}
print(rain_percent)
print(rain_percent[1980])
# prints
{1980: '17%', 1981: '15%', 1982: '10%'}
17%

Določanje parov ključ-vrednost

Prav tako lahko ustvarite in inicializirate slovar z uporabo parov vrednosti imen kot argumentov ključnih besed za dict () graditelj.



naložite kateri koli film s katerega koli spletnega mesta
population = dict(California=37253956, Colorado=5029196, Connecticut=3574097, Delaware=897934)
print(population)
# prints
{'Connecticut': 3574097, 'Delaware': 897934, 'California': 37253956, 'Colorado': 5029196}

Niz naborov ključev in vrednosti

Še en način za ustvarjanje slovarja je uporaba niza ključev-vrednosti. Tukaj je isti primer kot zgoraj.

pairs = [('California', 37253956), ('Colorado', 5029196), ('Connecticut', 3574097), ('Delaware', 897934)]
population = dict(pairs)
print(population)
# prints
{'Connecticut': 3574097, 'Delaware': 897934, 'California': 37253956, 'Colorado': 5029196}

Dict razumevanje

Razumevanje diktata ponuja kul sintakso za inicializacijo diktata, če lahko izračunate vrednosti na podlagi ključev. Spodaj inicializira dikt števil in kvadratne vrednosti za obseg števil.





print({x: x**2 for x in xrange(10, 20)})
# prints
{10: 100, 11: 121, 12: 144, 13: 169, 14: 196, 15: 225, 16: 256, 17: 289, 18: 324, 19: 361}

Kako deluje? Slednji del ( za x v xrange (10, 20) ) vrne obseg številk v podanem obsegu. Del razumevanja narekovanja ( {x: x ** 2 ..} ) se vrti čez to območje in inicializira slovar.

Delo s slovarjem Python

Kaj lahko storite s slovarji, ko jih ustvarite? No, lahko dostopate do elementov, posodabljate vrednosti, brišete elemente itd.





Dostop do slovarskih elementov Python

Dostopajte do elementa diktata s ključem v oklepajih, tako kot bi matriko ali seznam .

print(population['Delaware'])
# prints
897934

Če je ključ številka, narekovajev ne potrebujete. Nato se zdi, da je izraz videti kot indeksiranje seznama ali matrike.

print(rain_percent[1980])
# prints
17%

Vrsta ključa pri dostopu do njega se mora ujemati s tem, kar je shranjeno v slovarju Python. Naslednje povzroča napako, saj so shranjeni ključi številke, ključ za dostop pa niz.

x = '1980'
print(rain_percent[x])
# results in
1 x = '1980'
----> 2 print(rain_percent[x])
KeyError: '1980'

Dostop do neobstoječega ključa je napaka.

rain_percent = { 1980: '17%', 1981: '15%', 1982: '10%'}
print(rain_percent[1983])
# prints
1 rain_percent = { 1980: '17%', 1981: '15%', 1982: '10%'}
----> 2 print(rain_percent[1983])
KeyError: 1983

Za dostop do ključa in podajanje privzete vrednosti, če preslikava ne obstaja, uporabite datoteko get () metoda s privzeto vrednostjo kot drugim argumentom.

prenosni računalnik priključen, ne polni se
print(rain_percent.get(1985, '0%'))
# prints
0%

Preverjanje obstoja

Kaj pa, če želite preveriti prisotnost ključa, ne da bi dejansko poskušali dostopati do njega (in morda naleteli na KeyError kot zgoraj)? Uporabite lahko v ključno besedo v obrazcu ključ v dct ki vrne logično vrednost.

print(1980 in rain_percent)
print('1980' in rain_percent)
# prints
True
False

S pomočjo obrazca obrnite pogoj (tj. Zagotovite, da ključ ni v slovarju Python) ključ ni v dct . To je enako standardni negaciji pitona ni ključ v dct .

print(1980 not in rain_percent)
print(1985 not in rain_percent)
# prints
False
True

Spreminjanje elementov

Spremenite vrednost z dodelitvijo zahtevanega ključa.

users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}
users['age'] = 29
print(users)
# prints
{'lastname': 'Smith', 'age': 29, 'firstname': 'John'}

Z isto sintakso dodajte novo preslikavo v slovar Python.

users['dob'] = '15-sep-1971'
print(users)
# prints
{'dob': '15-sep-1971', 'lastname': 'Smith', 'age': 29, 'firstname': 'John'}

Posodobite več elementov slovarja v enem posnetku z uporabo nadgradnja() metoda.

users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}
users.update({'age': 29, 'dob': '15-sep-1971'})
print(users)
# prints
{'dob': '15-sep-1971', 'lastname': 'Smith', 'age': 29, 'firstname': 'John'}

S ključem nastavite privzeto vrednost setdefault () . Ta metoda nastavi vrednost ključa, če preslikava ne obstaja. Vrne trenutno vrednost.

# does not change current value
print(users.setdefault('firstname', 'Jane'))
# prints
John
# sets value
print(users.setdefault('city', 'NY'))
# prints
NY
# Final value
print(users)
# prints
{'lastname': 'Smith', 'age': 27, 'firstname': 'John', 'city': 'NY'}

Brisanje elementov

Izbris preslikav v slovarju z uporabo od operater. Ta operater ne vrne ničesar.

Naleteli boste na a KeyError če ključ ne obstaja v slovarju.

users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}
del users['age']
print(users)
# prints
{'lastname': 'Smith', 'firstname': 'John'}

Uporabi pop () namesto tega, če želite izbrisano vrednost vrniti.

users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}
print(users.pop('age'))
print(users)
# prints
27
{'lastname': 'Smith', 'firstname': 'John'}

Kaj pa, če želite izbrisati ključ, če ta obstaja, ne da bi pri tem prišlo do napake? Lahko uporabiš pop () in navedite Nobena za drugi argument:

users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}
users.pop('foo', None)
print(users)
# prints
{'lastname': 'Smith', 'age': 27, 'firstname': 'John'}

In tukaj je enodelna vrstica za brisanje kopice ključev iz slovarja, ne da bi prišlo do napake pri neobstoječih ključih.

users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27, 'dob': '15-sep-1971'}
map(lambda x : users.pop(x, None),['age', 'foo', 'dob'])
print(users)

Želite izbrisati vse ključe iz slovarja? Uporabi jasno () metoda.

users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}
users.clear()
print(users)
# prints
{}

Ponavljanje s slovarji Python

Python ponuja številne metode za ponavljanje vnosov slovarja. Izberite enega, ki ustreza vašim potrebam.

Looping over Keys

  • Najenostavnejša metoda za zaporedno obdelavo ključev (in po možnosti vrednosti) uporablja zanko v obliki: | _+_ |
  • Z uporabo metode iterkeys () deluje popolnoma enako kot zgoraj. Izberite, kateri obrazec želite uporabiti. | _+_ |
  • Tretja metoda pridobivanja in obdelave ključev v zanki vključuje uporabo vgrajene funkcije iter () . users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}
    for k in users:
    print(k, '=>', users[k])
    # prints
    lastname => Smith
    age => 27
    firstname => John
  • Ko potrebujete indeks ključa, ki se obdeluje, uporabite naštej () vgrajena funkcija, kot je prikazano. | _+_ |

Preklapljanje po parih ključ-vrednost

  • Če želite z enim klicem pridobiti vsak par ključ-vrednost, uporabite iteritems () . users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}
    for k in users.iterkeys():
    print(k, '=>', users[k])
    # prints
    lastname => Smith
    age => 27
    firstname => John

Iteracija nad vrednostmi

  • Metoda itervalues ​​() lahko uporabite za ponovitev vseh vrednosti v slovarju. Čeprav je ta metoda podobna uporabi zanke vrednote() , je učinkovitejša, saj ne izvleče vseh vrednosti hkrati. | _+_ |

Izvlečenje nizov

Naslednje metode opisujejo pridobivanje različnih informacij iz slovarja Python v obliki matrike. Nastalo matriko je mogoče preoblikovati z uporabo običajnih konstrukcij python. Vendar ne pozabite, da je vrnjeni niz lahko velik, odvisno od velikosti slovarja. Torej je lahko več drago (po spominu) za obdelavo teh nizov kot z uporabo zgoraj navedenih metod ponavljanja.

En primer, v katerem je sprejemljivo delati s temi matrikami, je, ko morate izbrisati elemente iz slovarja, ko naletite na nezaželene elemente. Delo z iteratorjem med spreminjanjem slovarja lahko povzroči RuntimeError.

  • Metoda predmeti () vrne matriko naborov ključ-vrednost. Po teh parih ključ-vrednost lahko ponovite, kot je prikazano: | _+_ |
  • Z metodo pridobite vse ključe v slovarju ključi () . | _+_ | Z vrnjenim nizom preklapljajte ključe. | _+_ |
  • Na podoben način uporabite metodo vrednote() za pridobivanje vseh vrednosti v slovarju. | _+_ |

Kako uporabljate slovarje Python?

V tem članku smo poskušali zajeti najpogostejše primere uporabe slovarjev python. Preverite vse naše drugi članki o Pythonu za več nasvetov Python. Če imate druge primere uporabe, za katere menite, da bi jih morali vključiti, nam to sporočite v spodnjih komentarjih!

aplikacijo za prenos glasbe na telefon

Zasluge za sliko: viper345/Shutterstock

Deliti Deliti Cvrkutati E-naslov Kako dostopati do Googlove vgrajene ravni mehurčkov v sistemu Android

Če ste se kdaj morali prepričati, da je nekaj na nivoju, lahko zdaj v nekaj sekundah v telefonu dobite raven mehurčkov.

Preberite Naprej
Sorodne teme
  • Programiranje
  • Python
O avtorju Jay Sridhar(17 objavljenih člankov) Več od Jaya Sridharja

Naročite se na naše novice

Pridružite se našemu glasilu za tehnične nasvete, ocene, brezplačne e -knjige in ekskluzivne ponudbe!

Kliknite tukaj, če se želite naročiti