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

Poistettu sisältö Lisätty sisältö
p rv
Hartz (keskustelu | muokkaukset)
laajennus
Rivi 1:
Dictionary on datatyyppi, joka koostuu avain&ndash;arvo-pareista. DictionaryssaDictionary käytetäänympäroidään aaltosulkeitaaaltosulkeilla <tt>{...}</tt>. Avain ja arvo erotetaan kaksoispisteilläkaksoispisteellä. Avaimet ja arvotAvain&ndash;arvo-parit erotetaan toisistaan pilkuilla. Dictionaryssä voi olla kaikkia datatyyppejä ja myös esimerkiksi muuttujia. Dictionary on merkkikokoriippuvainen (sanojen "sana" ja "Sana" välillä on ero). Jos dictionaryn sisältö määritellään ohjelmassa, se kannattaa jakaa riveille ettei se ole yksi pitkä pötkö.
 
==Yleistä==
Dictionary on aina aakkosjärjestyksessä.
 
Määritellään tyhjä dictionary:
<pre><nowiki>
 
d = {'Seppo': 'Virtanen',
>>> d = {}
'Maija': 'Saarinen',
 
'Martti': 'Lampi'}
Tulostetaan se:
</nowiki></pre>
 
>>> 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.
 
==Hakeminen==
Dictionarysta voidaan hakea arvo avaimen avulla.
 
Hakee avaimet:
<pre>print d['Seppo'] # dictionary[avain]</pre>
 
>>> d.keys()
tulostaa: Virtanen
['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==
 
Avain = arvo
d[avain] = arvo
<pre>d['Pekka'] = 'Ilmarinen'</pre>
 
>>> d['Pekka'] = 'Ilmarinen'
>>> d
{'Pekka': 'Ilmarinen', 'Maija': 'Saarinen', 'Seppo': 'Virtanen', 'Martti': 'Lampi'}
 
==Poistaminen==
 
Avaimen avulla
Poistaminen tapahtuu avaimen avulla del d[avain].
<pre>del d['Maija']</pre>
 
>> del d['Maija']
>> d
{'Seppo': 'Virtanen', 'Martti': 'Lampi'}
 
Clear poistaa kaiken dictionarystä (tyhjentää).
 
>>> d.clear()
 
==Tarkistaminen==
 
has_key-funktiolla onnistuu.
Tarkistaminen onnistuu has_key-metodilla.
<pre>
 
if d.has_key('Martti'):
print >>> d[.has_key('Martti'])
True
</pre>
>>> d['Martti']
Tulostaa: Lampi
'Lampi'
 
Toinen mahdollisuus on "avain in d":
>>> 'Martti' in d
True
>>> d['Martti']
'Lampi'
 
==Iterointi==
 
iteritems()
Avain&ndash;arvo-parien iterointi onnistuu iteritems()-metodilla:
<pre>
 
elukat = {'kissa':3, 'koira':13, 'rotta':2}
nimet = {'Seppo': 'Virtanen', 'Maija': 'Saarinen', 'Martti': 'Lampi'}
for elukka, maara in elukat.iteritems():
for etunimi, sukunimi in nimet.iteritems():
print elukka, maara
print etunimi, sukunimi
</pre>
 
Tulostaa:
Maija Saarinen
<pre>
Seppo Virtanen
kissa 3
Martti Lampi
koira 13
 
rotta 2
==Dict-konstruktori==
</pre>
 
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]
 
[[Luokka:Python|dictionary]]