Tässä opetusohjelmassa opit kaiken Python-sanakirjoista; miten ne luodaan, käytetään, lisätään, poistetaan elementtejä ja erilaisia sisäänrakennettuja menetelmiä.
Video: Python-sanakirjat avain- / arvo-parien tallentamiseen
Python-sanakirja on järjestämätön kokoelma esineitä. Jokaisella sanakirjan kohdalla on key/value
pari.
Sanakirjat on optimoitu hakemaan arvoja, kun avain tiedetään.
Python-sanakirjan luominen
Sanakirjan luominen on yhtä helppoa kuin esineiden sijoittaminen ()
pilkuin erotettujen kiharoiden aaltosulkeiden sisään .
Kohteella on a key
ja vastaava, value
joka ilmaistaan parina ( avain: arvo ).
Vaikka arvot voivat olla minkä tahansa tyyppisiä ja ne voivat toistaa, avainten on oltava muuttumattomia (merkkijono, numero tai sekvenssi muuttumattomien elementtien kanssa) ja yksilöllisten.
# empty dictionary my_dict = () # dictionary with integer keys my_dict = (1: 'apple', 2: 'ball') # dictionary with mixed keys my_dict = ('name': 'John', 1: (2, 4, 3)) # using dict() my_dict = dict((1:'apple', 2:'ball')) # from sequence having each item as a pair my_dict = dict(((1,'apple'), (2,'ball')))
Kuten näet ylhäältä, voimme luoda sanakirjan myös sisäänrakennetun dict()
toiminnon avulla.
Elementtien käyttö sanakirjasta
Vaikka indeksointia käytetään muiden tietotyyppien kanssa arvojen käyttämiseen, sanakirja käyttää keys
. Avaimia voidaan käyttää joko hakasulkeissa ()
tai get()
menetelmän kanssa.
Jos käytämme hakasulkeita ()
, KeyError
korotetaan, jos avainta ei löydy sanakirjasta. Toisaalta get()
menetelmä palaa, None
jos avainta ei löydy.
# get vs () for retrieving elements my_dict = ('name': 'Jack', 'age': 26) # Output: Jack print(my_dict('name')) # Output: 26 print(my_dict.get('age')) # Trying to access keys which doesn't exist throws error # Output None print(my_dict.get('address')) # KeyError print(my_dict('address'))
Tuotos
Tunkki 26 Ei yhtään jäljitys (viimeisin puhelu viimeisin): Tiedosto "", rivi 15, painettuna (my_dict ('address')) KeyError: 'address'
Sanakirjaelementtien muuttaminen ja lisääminen
Sanakirjat ovat muutettavissa. Voimme lisätä uusia kohteita tai muuttaa olemassa olevien kohteiden arvoa määritysoperaattorilla.
Jos avain on jo läsnä, nykyinen arvo päivitetään. Jos avainta ei ole, sanakirjaan lisätään uusi ( avain: arvo ) pari.
# Changing and adding Dictionary Elements my_dict = ('name': 'Jack', 'age': 26) # update value my_dict('age') = 27 #Output: ('age': 27, 'name': 'Jack') print(my_dict) # add item my_dict('address') = 'Downtown' # Output: ('address': 'Downtown', 'age': 27, 'name': 'Jack') print(my_dict)
Tuotos
('nimi': 'Jack', 'ikä': 27) ('nimi': 'Jack', 'ikä': 27, 'osoite': 'keskusta')
Elementtien poistaminen Sanakirjasta
Voimme poistaa tietyn kohteen sanakirjasta pop()
menetelmällä. Tämä menetelmä poistaa toimitetun kohteen key
ja palauttaa value
.
popitem()
Menetelmää voidaan käyttää poistamaan ja palauttaa mielivaltaisen (key, value)
tuote pari sanakirjasta. Kaikki kohteet voidaan poistaa kerralla clear()
menetelmällä.
Voimme myös käyttää del
avainsanaa yksittäisten kohteiden tai koko sanakirjan poistamiseen.
# Removing elements from a dictionary # create a dictionary squares = (1: 1, 2: 4, 3: 9, 4: 16, 5: 25) # remove a particular item, returns its value # Output: 16 print(squares.pop(4)) # Output: (1: 1, 2: 4, 3: 9, 5: 25) print(squares) # remove an arbitrary item, return (key,value) # Output: (5, 25) print(squares.popitem()) # Output: (1: 1, 2: 4, 3: 9) print(squares) # remove all items squares.clear() # Output: () print(squares) # delete the dictionary itself del squares # Throws Error print(squares)
Tuotos
16 (1: 1, 2: 4, 3: 9, 5: 25) (5, 25) (1: 1, 2: 4, 3: 9) () Palautus (viimeisin puhelu viimeisin): Tiedosto "", rivi 30, painettuna (neliöt) NameError: nimeä 'neliöt' ei ole määritelty
Python-sanastomenetelmät
Sanakirjan kanssa käytettävissä olevat menetelmät on taulukoitu alla. Joitakin niistä on jo käytetty yllä olevissa esimerkeissä.
Menetelmä | Kuvaus |
---|---|
asia selvä() | Poistaa kaikki kohteet sanakirjasta. |
kopio() | Palauttaa matalan kopion sanakirjasta. |
fromkeys (seq (, v)) | Palauttaa uuden sanakirjan, jossa on avaimet sekvenssistä ja arvo on yhtä suuri kuin v (oletusarvo on None ). |
get (avain (, d)) | Palauttaa avaimen arvon. Jos avainta ei ole, palauttaa d (oletusarvo on None ). |
tuotteet () | Palauta uusi objekti sanakirjan kohteista (avain, arvo) -muodossa. |
näppäimet () | Palauttaa uuden objektin sanakirjan avaimista. |
pop (näppäin (, d)) | Poistaa kohteen avaimella ja palauttaa sen arvon tai d, jos avainta ei löydy. Jos d: tä ei anneta eikä avainta löydy, se nostaa KeyError . |
popitem () | Poistaa ja palauttaa mielivaltaisen kohteen ( avain, arvo ). Nostaa, KeyError jos sanakirja on tyhjä. |
setdefault (avain (, d)) | Palauttaa vastaavan arvon, jos avain on sanakirjassa. Jos ei, lisää avain arvoon d ja palauttaa d (oletusarvo on None ). |
päivitys ((muu)) | Päivittää sanakirjan avain / arvo-pareilla muista kirjoittamalla olemassa olevat avaimet. |
arvot () | Palauttaa uuden objektin sanakirjan arvoista |
Tässä on muutama esimerkki näiden menetelmien käyttötapauksista.
# Dictionary Methods marks = ().fromkeys(('Math', 'English', 'Science'), 0) # Output: ('English': 0, 'Math': 0, 'Science': 0) print(marks) for item in marks.items(): print(item) # Output: ('English', 'Math', 'Science') print(list(sorted(marks.keys())))
Tuotos
('Math': 0, 'English': 0, 'Science': 0) ('Math', 0) ('English', 0) ('Science', 0) ('Englanti', 'Matematiikka', ' Tiede ')
Python-sanakirjan ymmärtäminen
Sanakirjan ymmärtäminen on tyylikäs ja ytimekäs tapa luoda uusi sanakirja Pythonin iteroitavasta.
Sanakirjan ymmärtäminen koostuu lausekeparista ( avain: arvo ), jota seuraa for
lausunto kiharoiden aaltosulkeiden sisällä ()
.
Tässä on esimerkki sanakirjan tekemisestä siten, että jokainen kohde on numeropari ja sen neliö.
# Dictionary Comprehension squares = (x: x*x for x in range(6)) print(squares)
Tuotos
(0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25)
Tämä koodi vastaa koodia
squares = () for x in range(6): squares(x) = x*x print(squares)
Tuotos
(0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25)
A dictionary comprehension can optionally contain more for or if statements.
An optional if
statement can filter out items to form the new dictionary.
Here are some examples to make a dictionary with only odd items.
# Dictionary Comprehension with if conditional odd_squares = (x: x*x for x in range(11) if x % 2 == 1) print(odd_squares)
Output
(1: 1, 3: 9, 5: 25, 7: 49, 9: 81)
To learn more dictionary comprehensions, visit Python Dictionary Comprehension.
Other Dictionary Operations
Dictionary Membership Test
We can test if a key
is in a dictionary or not using the keyword in
. Notice that the membership test is only for the keys
and not for the values
.
# Membership Test for Dictionary Keys squares = (1: 1, 3: 9, 5: 25, 7: 49, 9: 81) # Output: True print(1 in squares) # Output: True print(2 not in squares) # membership tests for key only not value # Output: False print(49 in squares)
Output
True True False
Iterating Through a Dictionary
We can iterate through each key in a dictionary using a for
loop.
# Iterating through a Dictionary squares = (1: 1, 3: 9, 5: 25, 7: 49, 9: 81) for i in squares: print(squares(i))
Output
1 9 25 49 81
Dictionary Built-in Functions
Sisäänrakennettuja toimintoja like all()
, any()
, len()
, cmp()
, sorted()
jne käytetään yleisesti sanakirjatyöskentely eri tehtäviin.
Toiminto | Kuvaus |
---|---|
kaikki() | Palaa, True jos kaikki sanakirjan näppäimet ovat totta (tai jos sanakirja on tyhjä). |
minkä tahansa() | Palaa, True jos jokin sanakirjan avain on totta. Jos sanakirja on tyhjä, palaa False . |
len () | Palauta sanakirjan pituus (kohteiden lukumäärä). |
cmp () | Vertaa kahden sanakirjan kohteita. (Ei saatavilla Python 3: ssa) |
lajiteltu () | Palauta uusi lajiteltu avainluettelo sanakirjasta. |
Tässä on joitain esimerkkejä, jotka käyttävät sisäänrakennettuja toimintoja sanakirjan käsittelemiseen.
# Dictionary Built-in Functions squares = (0: 0, 1: 1, 3: 9, 5: 25, 7: 49, 9: 81) # Output: False print(all(squares)) # Output: True print(any(squares)) # Output: 6 print(len(squares)) # Output: (0, 1, 3, 5, 7, 9) print(sorted(squares))
Tuotos
Väärä Tosi 6 (0, 1, 3, 5, 7, 9)