Python 3/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ö.
Operaatiot
muokkaalen(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'
Hakeminen
muokkaa- 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ääminen
muokkaa- d[avain] = arvo
>>> d['Pekka'] = 'Ilmarinen'
>>> d
{'Pekka': 'Ilmarinen', 'Maija': 'Saarinen', 'Seppo': 'Virtanen', 'Martti': 'Lampi'}
Poistaminen
muokkaa- Poistaminen tapahtuu avaimen avulla del d[avain]
>> del d['Maija']
>> d
{'Seppo': 'Virtanen', 'Martti': 'Lampi'}
- Clear poistaa kaiken dictionarystä (tyhjentää)
>>> d.clear()
Kopiominen
muokkaa- Dictionaryn voi kopioida copy()-metodilla
>> a = d.copy()
>> a
>> {'Maija': 'Saarinen', 'Seppo': 'Virtanen', 'Martti': 'Lampi'}
Tarkistaminen
muokkaa- 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äminen
muokkaa- 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}
Iteroiminen
muokkaa- 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-konstruktori
muokkaa- 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'}
Poikkeukset
muokkaa- 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 muualla
muokkaa- Python-kielisen_ohjelmoinnin_perusteet (Wikiopiston opintopiirin opiskeluohjeita)
- Python Tutorial – dictionary
- Dive Into Python – Introducing dictionaries
- Python Library Reference: Mapping Types – dict
Johdanto: | |
---|---|
Tietotyypit ja tietorakenteet: |
Luvut - Merkkijonot - Lista - Monikko (tuple) - Sanakirja - Joukko (set) |
Ohjausrakenteet | |
Muut kielen rakenteet: |
Moduuli - Luokka - Funktio - Virheidenhallinta - Tiedosto |
Graafinen käyttöliittymä: | |
Harjoitustehtäviä: | |
Lisätiedot ja lähteet: |