Ebben az oktatóanyagban mindent megtudhat a Python szótárakról; hogyan jönnek létre, elérik, hozzáadják, eltávolítják az elemeket és különféle beépített módszereket.
Videó: Python szótárak a kulcs / érték párok tárolásához
A Python szótár rendezetlen elemgyűjtemény. A szótár minden elemének van key/value
párja.
A szótárak optimalizálva vannak az értékek lekérésére, amikor a kulcs ismert.
Python szótár létrehozása
A szótár létrehozása olyan egyszerű, mint az elemeket ()
vesszővel elválasztott göndör zárójelbe tenni .
Az elemnek van egy key
és egy megfelelője value
, amelyet párban fejeznek ki ( kulcs: érték ).
Bár az értékek bármilyen adattípusúak lehetnek és megismételhetők, a kulcsoknak változhatatlan típusúaknak kell lenniük (karakterlánc, szám vagy változó elemekkel rendelkező kettő), és egyedieknek kell lenniük.
# 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')))
Amint fentről látható, a beépített dict()
függvény segítségével szótárt is létrehozhatunk .
Elemek elérése a szótárból
Míg az indexelést más adattípusokkal együtt használják az értékek eléréséhez, egy szótár használja keys
. A kulcsok használhatók szögletes zárójelben ()
vagy a get()
módszerrel.
Ha szögletes zárójelet használunk ()
, KeyError
akkor fel van emelve, ha a kulcs nem található a szótárban. Másrészt a get()
metódus visszatér, None
ha a kulcs nem található.
# 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'))
Kimenet
Jack 26 Nincs Traceback (a legutóbbi hívás utoljára): "" fájl, 15. sor, nyomtatásban (my_dict ('address')) KeyError: 'address'
Szótár elemek módosítása és hozzáadása
A szótárak változtathatóak. Hozzáadhatunk új elemeket vagy megváltoztathatjuk a meglévő elemek értékét egy hozzárendelés operátor segítségével.
Ha a kulcs már megvan, akkor a meglévő érték frissül. Abban az esetben, ha a kulcs nincs, új ( kulcs: érték ) pár kerül a szótárba.
# 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)
Kimenet
('név': 'Jack', 'kor': 27) ('név': 'Jack', 'kor': 27, 'cím': 'Belváros')
Elemek eltávolítása a szótárból
A pop()
módszer segítségével eltávolíthatunk egy adott elemet egy szótárból . Ez a módszer eltávolít egy elemet a megadottal, key
és visszaadja a value
.
A popitem()
módszer segítségével tetszőleges (key, value)
elempárokat lehet eltávolítani és visszaküldeni a szótárból. Az összes elem egyszerre eltávolítható a clear()
módszer segítségével.
Használhatjuk a del
kulcsszót egyes elemek vagy maga a teljes szótár eltávolítására is.
# 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)
Kimenet
16 (1: 1, 2: 4, 3: 9, 5: 25) (5, 25) (1: 1, 2: 4, 3: 9) () Traceback (utolsó hívás utoljára): "" fájl, 30. sor nyomtatással (négyzetek) NameError: A "négyzetek" név nincs meghatározva
Python szótár módszerek
A szótárral elérhető módszereket az alábbiakban soroljuk fel. Közülük néhányat már használtak a fenti példákban.
Módszer | Leírás |
---|---|
egyértelmű() | Eltávolít minden elemet a szótárból. |
másolat() | Visszaadja a szótár sekély példányát. |
kulcsok (szekvencia (, v)) | Visszaad egy új szótárt, amelynek kulcsai a szeq-ből és értéke egyenlő v-vel (alapértelmezett érték None :). |
get (kulcs (, d)) | Visszaadja a kulcs értékét. Ha a kulcs nem létezik, akkor d-t ad vissza (alapértelmezés szerint None ). |
elemek () | A szótár elemeinek új objektumát adja vissza (kulcs, érték) formátumban. |
kulcsok() | A szótár kulcsainak új objektumát adja vissza. |
pop (billentyű (, d)) | Eltávolítja az elemet a kulccsal, és visszaadja annak értékét, vagy d, ha a kulcs nem található. Ha a d nincs megadva, és a kulcs nem található, akkor felemeli KeyError . |
popitem () | Eltávolít és visszaad egy tetszőleges elemet ( kulcs, érték ). Felemel, KeyError ha a szótár üres. |
setdefault (kulcs (, d)) | Visszaadja a megfelelő értéket, ha a kulcs a szótárban található. Ha nem, illessze be a kulcsot d értékkel, és adja vissza a d értéket (alapértelmezés szerint None ). |
frissítés ((egyéb)) | Frissíti a szótárt a többi kulcs / érték párokkal, felülírva a meglévő kulcsokat. |
értékek () | Egy új objektumot ad vissza a szótár értékeiből |
Íme néhány példa ezeknek a módszereknek a felhasználására.
# 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())))
Kimenet
('Math': 0, 'English': 0, 'Science': 0) ('Math', 0) ('English', 0) ('Science', 0) ('English', 'Math', ' Tudomány')
Python szótár megértése
A szótár megértése elegáns és tömör módszer új szótár létrehozására egy iterálható Pythonban.
A szótár megértése egy kifejezéspárból ( kulcs: érték ) áll, amelyet egy for
göndör zárójelben lévő utasítás követ ()
.
Itt van egy példa egy szótár készítésére úgy, hogy minden elem szám- és négyzetpár legyen.
# Dictionary Comprehension squares = (x: x*x for x in range(6)) print(squares)
Kimenet
(0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25)
Ez a kód egyenértékű a következővel:
squares = () for x in range(6): squares(x) = x*x print(squares)
Kimenet
(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
Beépített funkciók tetszik all()
, any()
, len()
, cmp()
, sorted()
stb általánosan használt szótárak különböző feladatokat.
Funkció | Leírás |
---|---|
minden() | Akkor térjen vissza, True ha a szótár összes kulcsa igaz (vagy ha a szótár üres). |
Bármi() | Akkor térjen vissza, True ha a szótár bármelyik kulcsa igaz. Ha a szótár üres, térjen vissza False . |
len () | Adja vissza a szótár hosszát (tételek számát). |
cmp () | Két szótár tételeit hasonlítja össze. (Nem érhető el a Python 3-ban) |
rendezve () | Visszaad egy új rendezett kulcslistát a szótárban. |
Íme néhány példa, amelyek beépített függvényeket használnak egy szótár használatához.
# 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))
Kimenet
Hamis Igaz 6 (0, 1, 3, 5, 7, 9)