Ero sivun ”Python 2/Sanakirja” versioiden välillä

Poistettu sisältö Lisätty sisältö
Ei muokkausyhteenvetoa
p Käyttäjän Jaajaajoo (keskustelu) muokkaukset kumottiin ja sivu palautettiin viimeisimpään käyttäjän Hartz tekemään versioon.
Rivi 1:
'''Dictionary''' eli "sanakirja" on tietotyyppi, joka koostuu avain&ndash;arvo-pareista. Dictionary on assosiaatiotaulukko. Dictionary ympäroidään aaltosulkeilla <tt>{}</tt>. Avain ja arvo erotetaan kaksoispisteellä <tt>:</tt>. Avain&ndash;arvo-parit erotetaan toisistaan pilkuilla <tt>,</tt>. Dictionaryn avaimen täytyy olla muuttumaton tyyppiä (eli ei [[Python/lista|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==
 
{|
|-
| 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ä==
 
Määritellään tyhjä dictionary:
 
>>> d = {}
 
Tulostetaan se:
 
>>> d
{}
 
Määritellään avain&ndash;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ää [[Python/monikko|monikkoa]] tai [[Python/lista|listaa]] dictionaryn sijasta.
 
Tulostetaan vain yksi arvo avaimen avulla:
 
>>> d['Maija']
'Saarinen'
 
==Hakeminen==
 
Hakee avaimet:
 
>>> d.keys()
['Maija', 'Seppo', 'Martti']
 
Hakee arvot:
 
>>> d.values()
['Saarinen', 'Virtanen', 'Lampi']
 
Dictionarysta voidaan hakea arvo avaimen avulla d[avain].
 
>>> d['Seppo']
'Virtanen'
 
Avain&ndash;arvo-parit voidaan hakea items()-metodilla:
>>> d.items()
[('Maija', 'Saarinen'), ('Seppo', 'Virtanen'), ('Martti', 'Lampi')]
 
==Lisääminen==
 
d[avain] = arvo
 
>>> d['Pekka'] = 'Ilmarinen'
>>> d
{'Pekka': 'Ilmarinen', 'Maija': 'Saarinen', 'Seppo': 'Virtanen', 'Martti': 'Lampi'}
 
==Poistaminen==
 
Poistaminen tapahtuu avaimen avulla del d[avain].
 
>> del d['Maija']
>> d
{'Seppo': 'Virtanen', 'Martti': 'Lampi'}
 
Clear poistaa kaiken dictionarystä (tyhjentää).
 
>>> d.clear()
 
==Kopiominen==
 
Dictionaryn voi kopioida copy()-metodilla:
 
>> a = d.copy()
>> a
>> {'Maija': 'Saarinen', 'Seppo': 'Virtanen', 'Martti': 'Lampi'}
 
==Tarkistaminen==
 
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==
 
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==
 
Avainten iteroiminen:
 
nimet = {'Seppo': 'Virtanen', 'Maija': 'Saarinen', 'Martti': 'Lampi'}
for etunimi in nimet.iterkeys():
print etunimi
 
Arvojen iteroiminen:
 
nimet = {'Seppo': 'Virtanen', 'Maija': 'Saarinen', 'Martti': 'Lampi'}
for sukunimi in nimet.itervalues():
print sukunimi
 
Avain&ndash;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==
 
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==
 
* KeyError: avainta ei ole dictionaryssä
 
==Tehtäviä==
 
* Tee ohjelma, joka määrittelee tyhjän dictionaryn, lisää siihen avain&ndash;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==
 
* [http://docs.python.org/tut/node7.html#SECTION007500000000000000000 Python Tutorial &ndash; dictionary]
* [http://www.diveintopython.org/getting_to_know_python/dictionaries.html Dive Into Python &ndash; Introducing dictionaries]
* [http://docs.python.org/lib/typesmapping.html Python Library Reference: Mapping Types -- dict]
 
[[Luokka:Python|dictionary]]