Selles õpetuses saate teada kõike Pythoni sõnastike kohta; kuidas neid luuakse, nendele juurde pääsetakse, neile lisatakse, elementidest eemaldatakse ja mitmesuguseid sisseehitatud meetodeid.
Video: Pythoni sõnastikud võtme / väärtuse paaride salvestamiseks
Pythoni sõnastik on korrastamata üksuste kogu. Igal sõnaraamatu üksusel on key/value
paar.
Sõnastikud on optimeeritud väärtuste hankimiseks, kui võti on teada.
Pythoni sõnaraamatu loomine
Sõnaraamatu loomine on sama lihtne kui üksuste paigutamine ()
komadega eraldatud lokkide sisse .
Üksusel on a key
ja vastav, value
mis on väljendatud paarina ( võti: väärtus ).
Kuigi väärtused võivad olla mis tahes tüüpi andmetega ja neid saab korrata, peavad võtmed olema muutumatut tüüpi (string, arv või muutumatute elementidega dupleks) ja unikaalsed.
# 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')))
Nagu ülalt näete, saame sisseehitatud dict()
funktsiooni abil luua ka sõnastiku .
Elementidele juurdepääs sõnastikust
Kui väärtuste kasutamiseks kasutatakse indekseerimist teiste andmetüüpidega, kasutab sõnastik keys
. Võtmeid saab kasutada kas nurksulgudes ()
või get()
meetodi abil.
Kui kasutame nurksulgusid ()
, KeyError
tõstetakse see juhul, kui võtit sõnastikust ei leia. Teiselt poolt, get()
meetod taastub, None
kui võtit ei leita.
# 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'))
Väljund
Jack 26 Puudub jälgimine (viimane kõne on viimane): fail "", rida 15, trükituna (my_dict ('aadress')) KeyError: 'address'
Sõnaraamatu elementide muutmine ja lisamine
Sõnaraamatud on muutlikud. Võime omistamisoperaatori abil lisada uusi üksusi või muuta olemasolevate üksuste väärtust.
Kui võti on juba olemas, värskendatakse olemasolevat väärtust. Juhul, kui võtit pole, lisatakse sõnaraamatusse uus paar ( võti: väärtus ).
# 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)
Väljund
('nimi': 'Jack', 'vanus': 27) ('nimi': 'Jack', 'vanus': 27, 'aadress': 'kesklinn')
Elementide eemaldamine sõnastikust
Selle pop()
meetodi abil saame konkreetse üksuse sõnastikust eemaldada . See meetod eemaldab pakutava üksuse key
ja tagastab value
.
popitem()
Meetodit saab kasutada eemaldada ja tagastada suvalise (key, value)
eset paari sõnastikust. Kõiki üksusi saab clear()
meetodi abil korraga eemaldada .
Samuti võime del
märksõna kasutada üksikute üksuste või kogu sõnastiku enda eemaldamiseks.
# 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)
Väljund
16 (1: 1, 2: 4, 3: 9, 5: 25) (5, 25) (1: 1, 2: 4, 3: 9) () Jälgimine (viimane kõne viimati): fail "", rida 30, trükituna (ruudud) NameError: nimi 'ruudud' pole määratletud
Pythoni sõnastiku meetodid
Sõnaraamatuga saadaolevad meetodid on toodud allpool. Mõnda neist on ülaltoodud näidetes juba kasutatud.
Meetod | Kirjeldus |
---|---|
selge () | Eemaldab sõnastikust kõik üksused. |
koopia () | Tagastab sõnastiku madala koopia. |
võtmed (järgnevad (, v)) | Tagastab uue sõnastiku võtmetega seq-st ja väärtusega võrdne v (vaikimisi väärtus None ). |
saama (võti (, d)) | Tagastab võtme väärtuse. Kui võtit pole olemas, tagastab d (vaikimisi None ). |
esemed () | Tagastab sõnastiku üksuste uue objekti vormingus (võti, väärtus). |
võtmed () | Tagastab sõnastiku võtmete uue objekti. |
pop (klahv (, d)) | Eemaldab üksuse võtmega ja tagastab selle väärtuse või d, kui võtit ei leita. Kui d-d ei esitata ja võtit ei leita, tõstab see KeyError . |
popitem () | Eemaldab ja tagastab suvalise üksuse ( võti, väärtus ). Tõstab, KeyError kui sõnastik on tühi. |
setdefault (võti (, d)) | Tagastab vastava väärtuse, kui võti on sõnastikus. Kui ei, sisestage võti väärtusega d ja tagastab d (vaikimisi None ). |
värskendus ((muu)) | Uuendab sõnastikku teiste võtmete / väärtuste paaridega, kirjutades olemasolevad võtmed üle. |
väärtused() | Tagastab sõnaraamatu väärtuste uue objekti |
Siin on mõned näited nende meetodite kasutamise juhtumitest.
# 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())))
Väljund
('Math': 0, 'English': 0, 'Science': 0) ('Math', 0) ('English', 0) ('Science', 0) ('Inglise', 'Matemaatika', ' Teadus ")
Pythoni sõnaraamatu mõistmine
Sõnastiku mõistmine on elegantne ja sisutihe viis Pythonis iteratiivist uue sõnastiku loomiseks.
Sõnaraamatu mõistmine koosneb väljendipaarist ( võti: väärtus ), millele järgneb for
lause lokkis sulgudes ()
.
Siin on näide sõnastiku koostamiseks, kus iga üksus on paar arv ja selle ruut.
# Dictionary Comprehension squares = (x: x*x for x in range(6)) print(squares)
Väljund
(0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25)
See kood on samaväärne koodiga
squares = () for x in range(6): squares(x) = x*x print(squares)
Väljund
(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
Sisseehitatud funktsioonid meeldib all()
, any()
, len()
, cmp()
, sorted()
, jne levinud sõnaraamatute täita erinevaid ülesandeid.
Funktsioon | Kirjeldus |
---|---|
kõik () | Tagasi, True kui kõik sõnastiku klahvid on tõesed (või kui sõnastik on tühi). |
ükskõik milline () | Naaske, True kui mõni sõnastiku võti vastab tõele. Kui sõnastik on tühi, naaske False . |
len () | Tagastab sõnastiku pikkuse (üksuste arvu). |
cmp () | Võrdleb kahe sõnaraamatu üksusi. (Pole saadaval Python 3-s) |
sorteeritud () | Tagastab sõnastikus uue järjestatud võtmete loendi. |
Siin on mõned näited, mis kasutavad sõnastikuga töötamiseks sisseehitatud funktsioone.
# 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))
Väljund
Vale Õige 6 (0, 1, 3, 5, 7, 9)