Python 2/Sanakirja

Dictionary eli "sanakirja" on tietotyyppi, joka koostuu avain–arvo-pareista. Dictionary on assosiaatiotaulukko. Dictionary ympäröidään aaltosulkeilla {}. Avain ja arvo erotetaan kaksoispisteellä :. Avain–arvo-parit erotetaan toisistaan pilkuilla ,. Dictionaryn avaimen täytyy olla muuttumaton tyyppiä (eli ei lista tai toinen dictionary). Dictionary on merkkikokoriippuvainen (sanojen "sana" ja "Sana" välillä on ero). Dictionary ei voi sisältää kahta samaa avainta. Jos dictionaryn sisältö määritellään ohjelmassa, se kannattaa jakaa riveille ettei se ole yksi pitkä pötkö.

OperaatiotMuokkaa

len(a)
a[k]
a[k] = v
del a[k]
a.clear()
a.copy()
k in a
k not in a
a.has_key(k)
a.items()
a.keys()
a.update([b])
a.fromkeys(seq[, value])
a.values()
a.get(k[, x])
a.setdefault(k[, x])
a.pop(k[, x])
a.popitem()
a.iteritems()
a.iterkeys()
a.itervalues()

YleistäMuokkaa

Määritellään tyhjä dictionary
 >>> d = {}
Tulostetaan se
>>> d
 {}
>>>
Määritellään avain–arvo-pareja sisätävä dictionary
 >>> d = {'Seppo': 'Virtanen', 'Maija': 'Saarinen', 'Martti': 'Lampi'}
Tulostetaan se
 >>> d
 {'Maija': 'Saarinen', 'Seppo': 'Virtanen', 'Martti': 'Lampi'}
>>>

Huomataan, että dictionary järjestää itsensä. Järjestys määräytyy avainten mukaan. Jos järjestys halutaan säilyttää, täytyy käyttää monikkoa tai listaa dictionaryn sijasta.

Tulostetaan vain yksi arvo avaimen avulla
 >>> d['Maija']
 'Saarinen'

HakeminenMuokkaa

Haetaan avaimet
 >>> d.keys()
 ['Maija', 'Seppo', 'Martti']
Haetaan arvot
 >>> d.values()
 ['Saarinen', 'Virtanen', 'Lampi']
Dictionarysta voidaan hakea arvo avaimen avulla d[avain]
 >>> d['Seppo']
 'Virtanen'
Avain–arvo-parit voidaan hakea items()-metodilla
 >>> d.items()
 [('Maija', 'Saarinen'), ('Seppo', 'Virtanen'), ('Martti', 'Lampi')]

LisääminenMuokkaa

d[avain] = arvo
 >>> d['Pekka'] = 'Ilmarinen'
 >>> d
 {'Pekka': 'Ilmarinen', 'Maija': 'Saarinen', 'Seppo': 'Virtanen', 'Martti': 'Lampi'}

PoistaminenMuokkaa

Poistaminen tapahtuu avaimen avulla del d[avain]
 >> del d['Maija']
 >> d
 {'Seppo': 'Virtanen', 'Martti': 'Lampi'}
Clear poistaa kaiken dictionarystä (tyhjentää)
 >>> d.clear()

KopiominenMuokkaa

Dictionaryn voi kopioida copy()-metodilla
 >> a = d.copy()
 >> a
 >> {'Maija': 'Saarinen', 'Seppo': 'Virtanen', 'Martti': 'Lampi'}

TarkistaminenMuokkaa

Tarkistaminen onnistuu has_key-metodilla
 >>> d.has_key('Martti')
 True
 >>> d['Martti']
 'Lampi'
Toinen mahdollisuus on "avain in d"
 >>> 'Martti' in d
 True
 >>> d['Martti']
 'Lampi'

YhdistäminenMuokkaa

Kahden dictionaryn yhdistäminen
 >>> d = {'apples': 1, 'oranges': 3, 'pears': 2}
 >>> d2 = {'pears': 4, 'grapes': 5, 'lemons': 6}
 >>> d.update(d2)
 >>> d
 {'grapes': 5, 'pears': 4, 'lemons': 6, 'apples': 1, 'oranges': 3}

IteroiminenMuokkaa

Avainten iteroiminen
 nimet = {'Seppo': 'Virtanen', 'Maija': 'Saarinen', 'Martti': 'Lampi'}
 for etunimi in nimet:
     print etunimi
Arvojen iteroiminen
 nimet = {'Seppo': 'Virtanen', 'Maija': 'Saarinen', 'Martti': 'Lampi'}
 for sukunimi in nimet.itervalues():
     print sukunimi
Avain–arvo-parien iteroiminen onnistuu iteritems()-metodilla
 nimet = {'Seppo': 'Virtanen', 'Maija': 'Saarinen', 'Martti': 'Lampi'}
 for etunimi, sukunimi in nimet.iteritems():
     print etunimi, sukunimi
Tulostaa
 Maija Saarinen
 Seppo Virtanen
 Martti Lampi

Dict-konstruktoriMuokkaa

Dict-konstruktorilla voidaan määritellä dictionary listan sisällä olevista avain-arvo-muotoisesta monikosta
 >>> d = dict([('Seppo', 'Virtanen'), ('Maija', 'Saarinen'), ('Martti', 'Lampi')])
 >>> d
 {'Maija': 'Saarinen', 'Seppo': 'Virtanen', 'Martti': 'Lampi'}
Toinen mahdollisuus antaa muuttujia avainsana-argumentteina
 >>> seppo = "Seppo"
 >>> virtanen = "Virtanen"
 >>> maija = "Maija"
 >>> saarinen = "Saarinen"
 >>> martti = "Martti"
 >>> lampi = "Lampi"
 >>> d = dict(seppo=virtanen, maija=saarinen, martti=lampi)
 >>> d
 {'Maija': 'Saarinen', 'Seppo': 'Virtanen', 'Martti': 'Lampi'}

PoikkeuksetMuokkaa

  • KeyError: avainta ei ole dictionaryssä

TehtäviäMuokkaa

  • Tee ohjelma, joka määrittelee tyhjän dictionaryn, lisää siihen avain–arvo-parin, tarkistaa löytyykö dictionarysta avainta ja tulostaa avaimen arvon (jos se löytyy).
 d = {}
 d['avain'] = ['arvo']
 if d.has_key('avain'):
     print d['avain']

Aiheesta muuallaMuokkaa