Reklaam

Pythoni sõnastik on teistes programmeerimiskeeltes leiduva assotsiatiivse massiiviga sarnane andmestruktuur. Massiiv või nimekiri indekseerib elemente positsiooni järgi. Teisalt indekseerib sõnaraamat elemente võtmed mis võivad olla stringid. Mõelge sõnastikule kui järjestamata kogumitele võtme-väärtus paarid.

python-sõnastiku võtme-väärtuse paarid

Selles artiklis tutvustame teile Python-sõnastiku kasutamist.

Sõnastiku loomine

Pythoni sõnastiku loomiseks on mitu viisi. Lihtsaim kasutab traksidega lähtestamist süntaksiga meenutab JSON Kuidas saada Pythoni ja JavaScripti suhtlemiseks JSON-i abilTäna näitan teile, kuidas kasutada JSON-i andmete saatmiseks JavaScripti kaudu Pythoni. Vaatan veebiserveri seadistamise ja kogu vajaliku koodi. Loe rohkem .

kasutajad = {'eesnimi': 'John', 'perekonnanimi': 'Smith', 'vanus': 27}

Klahvidena saate kasutada ka numbreid. Kasutage siiski klahvidena ujukoma numbreid, kuna arvuti salvestab need ligikaudsete väärtustena Kõik, mida peate teadma RAMi ja mäluhalduse kohtaRAM on teie arvuti lühiajaline mälu. Seega mõjutab mäluhaldus süsteemi jõudlust märkimisväärselt. Siin selgitame, kuidas RAM töötab ja kas saate selle efektiivsuse suurendamiseks midagi ette võtta.

instagram viewer
Loe rohkem .

rain_percent = {1980: '17% ', 1981: '15%', 1982: '10% '} prindi vihm. prindi vihmavilja [1980] # prindib. {1980: '17%', 1981: '15%', 1982: '10%'} 17%

Võtme-väärtuse paaride määramine

Samuti saate sõnastiku luua ja lähtestada, kasutades märksõnaargumentidena nimiväärtuste paare dikt () ehitaja.

elanikkond = dept (California = 37253956, Colorado = 5029196, Connecticut = 3574097, Delaware = 897934) trükiarv. # prindib. {'Connecticut': 3574097, 'Delaware': 897934, 'California': 37253956, 'Colorado': 5029196}

Võtmeväärtusega Tuplite massiiv

Veel üks sõnaraamatu loomise viis on kasutada võtmeväärtuse tüüpide massiivi. Siin on sama näide nagu ülal.

paarid = [('California', 37253956), ('Colorado', 5029196), ('Connecticut', 3574097), ('Delaware', 897934)] populatsioon = pilt (paarid) trükiarv. # prindib. {'Connecticut': 3574097, 'Delaware': 897934, 'California': 37253956, 'Colorado': 5029196}

Diktist aru saamine

Diktist arusaamine pakub laheda süntaksi diktiveerimiseks, kui saate väärtusi klahvide põhjal arvutada. Järgnev initsialiseerib arvuvahemiku ja ruutväärtuse numbrivahemiku numbrivahemiku jaoks.

printige {x: x ** 2 x jaoks xrange'is (10, 20)} # prindib. {10: 100, 11: 121, 12: 144, 13: 169, 14: 196, 15: 225, 16: 256, 17: 289, 18: 324, 19: 361}

Kuidas see töötab? Viimane osa (x jaoks xrange'is (10, 20)) tagastab määratud vahemikus olevad numbrid. Kujutise mõistmise osa ({x: x ** 2 ..}) silmuseid üle selle vahemiku ja lähtestab sõnastiku.

Töö Pythoni sõnaraamatuga

Mida saab teha sõnaraamatutega pärast nende loomist? Noh, saate juurde pääseda elementidele, värskendada väärtusi, kustutada elemente jne.

Juurdepääs Pythoni sõnaraamatu elementidele

Juurdepääs kujutise elemendile sulgudes oleva klahvi abil, nagu soovite massiiv või nimekiri Kuidas massiivid ja nimekirjad Pythonis töötavadMassiivid ja loendid on programmeerimisel kõige kasulikumad andmestruktuurid - ehkki vähesed inimesed kasutavad neid täies mahus. Loe rohkem .

trükiarv ['Delaware'] # prindib. 897934.

Kui võti on number, siis pole teil hinnapakkumisi vaja. Seejärel näib, et väljend on loetelu või massiivi indekseerimine.

prindi vihmavilja [1980] # prindib. 17%

Võtme tüüp sellele ligipääsemiseks peab vastama Pythoni sõnaraamatus talletatule. Järgnev põhjustab tõrke, kuna salvestatud võtmed on numbrid, samas kui pääsuklahv on string.

x = '1980' prindi vihmavilja [x] # tulemust 1 x = '1980' > 2 prindi vihma kestel [x] KeyError: '1980'

Olematule võtmele juurdepääs on viga.

rain_percent = {1980: '17% ', 1981: '15%', 1982: '10% '} prindi vihmaviljad [1983] # print 1 rain_percent = {1980: '17% ', 1981: '15%', 1982: '10% '} > 2 prindi rain_percent [1983] KeyError: 1983.

Võtmele juurdepääsu saamiseks ja vaikeväärtuse andmiseks, kui kaardistust pole, kasutage nuppu saada () meetod vaikimisi väärtusega kui teine ​​argument.

prindi rain_percent.get (1985, '0%') # prindib. 0%

Olemasolu kontrollimine

Mis siis, kui soovite kontrollida võtme olemasolu, ilma et peaksite tegelikult sellele juurde pääsema (ja võib-olla ilmub a KeyError nagu eespool)? Võite kasutada sisse märksõna vormis sisestage dct mis tagastab tõeväärtuse.

print 1980 vihmasajus. trükki '1980' vihmasaju jooksul. # prindib. Tõsi. Vale. 

Tühjendage tingimus (st veenduge, et võtit Pythoni sõnaraamatus pole), kasutades vormi klahvi mitte dct. See on samaväärne standardse python-eitamisega ei sisesta dct.

print 1980 mitte vihmas. print 1985 mitte vihmas. # prindib. Vale. Tõsi. 

Elementide muutmine

Muutke väärtust, määrates vajaliku võtme.

kasutajad = {'eesnimi': 'John', 'perekonnanimi': 'Smith', 'vanus': 27} kasutajad ['vanus'] = 29. trüki kasutajad. # prindib. {'perekonnanimi': 'Smith', 'vanus': 29, 'eesnimi': 'John'}

Uue kaardistamise lisamiseks Pythoni sõnaraamatusse kasutage sama süntaksi.

kasutajad ['dob'] = '15-september-1971 ' trüki kasutajad. # prindib. {'dob': '15-sep-1971 ',' perekonnanimi ':' Smith ',' vanus ': 29,' eesnimi ':' John '}

Uuendage sõnastiku mitut elementi ühe võtte abil, kasutades värskendus () meetod.

kasutajad = {'eesnimi': 'John', 'perekonnanimi': 'Smith', 'vanus': 27} users.update ({'vanus': 29, 'dob': '15-sep-1971 '}) trüki kasutajad. # prindib. {'dob': '15-sep-1971 ',' perekonnanimi ':' Smith ',' vanus ': 29,' eesnimi ':' John '}

Seadistage võtme vaikeväärtus kasutades Määra vaikimisi(). See meetod seab võtme väärtuse, kui kaardistamist pole. See tagastab praeguse väärtuse.

# ei muuda praegust väärtust. printige kasutajad.setdefault ('eesnimi', 'Jane') # prindib. Johannes # seab väärtuse. printige kasutajad.setdefault ('linn', 'NY') # prindib. NY # lõppväärtus. trüki kasutajad. # prindib. {'perekonnanimi': 'Smith', 'vanus': 27, 'eesnimi': 'John', 'linn': 'NY'}

Elementide kustutamine

Kustutage vasted sõnastikust, kasutades nuppu del operaator. See operaator ei tagasta midagi.

Teil tekib a KeyError kui võtit pole sõnastikus olemas.

kasutajad = {'eesnimi': 'John', 'perekonnanimi': 'Smith', 'vanus': 27} del kasutajad ['vanus'] trüki kasutajad. # prindib. {'perekonnanimi': 'Smith', 'eesnimi': 'John'}

Kasuta pop () selle asemel, kui soovite kustutatud väärtuse tagasi.

kasutajad = {'eesnimi': 'John', 'perekonnanimi': 'Smith', 'vanus': 27} prindi kasutajad.pop ('vanus') trüki kasutajad. # prindib. 27. {'perekonnanimi': 'Smith', 'eesnimi': 'John'}

Mis oleks, kui soovite võtme kustutada, kui see olemas on, ilma et peaksite seda tegema? Sa võid kasutada pop () ja täpsustage Puudub teiseks argumendiks järgmiselt:

kasutajad = {'eesnimi': 'John', 'perekonnanimi': 'Smith', 'vanus': 27} users.pop ('foo', puudub) trüki kasutajad. # prindib. {'perekonnanimi': 'Smith', 'vanus': 27, 'eesnimi': 'John'}

Ja siin on üherealine, et kustutada hunnik võtmeid sõnastikust, põhjustamata olematute võtmete viga.

kasutajad = {'eesnimi': 'John', 'perekonnanimi': 'Smith', 'vanus': 27, 'dob': '15 -sep-1971 '} kaart (lambda x: kasutajad.pop (x, puudub), ['vanus', 'foo', 'dob']) trüki kasutajad.

Kas soovite kustutada kõik sõnastiku võtmed? Kasuta tühjenda () meetod.

kasutajad = {'eesnimi': 'John', 'perekonnanimi': 'Smith', 'vanus': 27} users.clear () trüki kasutajad. # prindib. {}

Loopimine Pythoni sõnaraamatutega

Python pakub palju silmusmeetodid Kuidas toimivad silmused programmeerimiselSilmused on üks esimesi juhtimistüüpe, mida programmeerimisel õppida saate. Tõenäoliselt teate aeg-ajalt ja silmuste kohta, kuid mida täidab ajutine silmus? Loe rohkem sõnastiku kirjete kohal. Valige üks, mis sobib teie vajadustega.

Silmus üle võtmete

  • Lihtsaim meetod võtmete (ja võib-olla ka väärtuste) järjestikuseks töötlemiseks kasutab vormi silmust:
    kasutajad = {'eesnimi': 'John', 'perekonnanimi': 'Smith', 'vanus': 27} kasutajatele mõeldud k jaoks: printige k, '=>', kasutajad [k] # prindib. perekonnanimi => Smith. vanus => 27. eesnimi => John.
  • Meetodi kasutamine iterkeys () töötab täpselt samamoodi nagu ülalpool. Valige, millist vormi soovite kasutada.
    kasutajad = {'eesnimi': 'John', 'perekonnanimi': 'Smith', 'vanus': 27} k jaoks kasutajates.iterkeys (): prindi k, '=>', kasutajad [k] # prindib. perekonnanimi => Smith. vanus => 27. eesnimi => John.
  • Kolmas meetod võtmete hankimiseks ja töötlemiseks ahelas hõlmab sisseehitatud funktsiooni kasutamist iter ().
    kasutajad = {'eesnimi': 'John', 'perekonnanimi': 'Smith', 'vanus': 27} k jaoks iteris (kasutajad): prindi k, '=>', kasutajad [k] # prindib. perekonnanimi => Smith. vanus => 27. eesnimi => John.
  • Kui vajate töödeldava võtme indeksit, kasutage nuppu loendama () sisseehitatud funktsioon nagu näidatud.
    kasutajad = {'eesnimi': 'John', 'perekonnanimi': 'Smith', 'vanus': 27} indeksi jaoks võtme loend (kasutajad): prindi register, klahv, '=>', kasutajad [k] # prindib. 0 perekonnanimi => John. 1 vanus => John. 2 eesnimi => John.

Silmus üle võtme-väärtuse paaride

  • Kui soovite iga võtme-väärtuse paari ühe kõnega alla laadida, kasutage iteritems ().
    kasutajad = {'eesnimi': 'John', 'perekonnanimi': 'Smith', 'vanus': 27} k, v jaoks users.iteritems (): prindi k, '=>', v. # prindib. perekonnanimi => Smith. vanus => 27. eesnimi => John.

Väärtuste üle jäljendamine

  • Meetod itervalues ​​() saab kasutada kõigi sõnaraamatu väärtuste kordamiseks. Kuigi see meetod näeb välja sarnane kasutatava silmusega väärtused(), see on efektiivsem, kuna ei eralda kõiki väärtusi korraga.
    kasutajad = {'eesnimi': 'John', 'perekonnanimi': 'Smith', 'vanus': 27} väärtus jaoks users.itervalues ​​(): printimisväärtus. # prindib. Smith. 27. John.

Massiivide kaevandamine

Järgmised meetodid kirjeldavad mitmesuguse Pythoni sõnastiku teabe eraldamist massiivi kujul. Saadud massiivi saab tavaliste python-konstruktsioonide abil ümber lükata. Pidage siiski meeles, et tagastatud massiiv võib olla suur, sõltuvalt sõnastiku suurusest. Nii et võib olla rohkem kallis (mälu järgi) nende massiivide töötlemiseks, kui kasutades ülaltoodud iteraatori meetodeid.

Nende massiividega töötamine on vastuvõetav juhul, kui peate ebasoovitavate elementide ilmumisel kustutama üksused sõnastikust. Ineraatoriga töötamine sõnastiku muutmise ajal võib põhjustada RuntimeError'i.

  • Meetod üksused () tagastab võtmeväärtuse tüüpide massiivi. Nendes võtme-väärtuse paarides saate iteratsiooni teha, nagu näidatud:
    kasutajad = {'eesnimi': 'John', 'perekonnanimi': 'Smith', 'vanus': 27} k, v jaoks users.items (): printige k, '=>', v. # prindib. perekonnanimi => Smith. vanus => 27. eesnimi => John.
  • Hankige meetodi abil kõik sõnastiku võtmed klahvid ().
    kasutajad = {'eesnimi': 'John', 'perekonnanimi': 'Smith', 'vanus': 27} printige kasutajad.võtmed () # prindib. ['perekonnanimi', 'vanus', 'eesnimi']

    Kasutage tagastatud massiivi klahvide üle loopimiseks.

    k jaoks kasutajates.keys (): prindi k, '=>', kasutajad [k] # prindib. perekonnanimi => Smith. vanus => 27. eesnimi => John.
  • Sarnasel viisil kasutage meetodit väärtused() kõigi sõnastiku väärtuste toomiseks.
    väärtuse jaoks user.values ​​(): printimisväärtus. # prindib. Smith. 27. John. 

Kuidas te Pythoni sõnaraamatuid kasutate?

Oleme selles artiklis püüdnud käsitleda python-sõnaraamatute kõige tavalisemaid juhtumeid. Tutvuge kindlasti kõigi meiega muud Pythoni artiklid 10 peamist Pythoni näidet, mis aitavad teil kiiresti õppidaSee artikkel Pythoni põhinäidetest on mõeldud neile, kellel on juba programmeerimiskogemus ja kes soovivad lihtsalt võimalikult kiiresti Pythonile üle minna. Loe rohkem isegi veel Pythoni näpunäiteid 5 kursust, mis viivad teid Python Beginnerist Pro-niNeed viis kursust õpetavad teile kõike programmeerimist Pythonis, mis on praegu üks kuumimaid keeli. Loe rohkem . Kui teil on muid kasutusjuhte, mis peaksid teie arvates sisalduma, palun andke meile sellest teada allolevates kommentaarides!

Piltide autorid: viper345 / Shutterstock