Python szótár (példákkal)

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/valuepá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 (), KeyErrorakkor fel van emelve, ha a kulcs nem található a szótárban. Másrészt a get()metódus visszatér, Noneha 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 delkulcsszó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, KeyErrorha 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 forgö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, Trueha a szótár összes kulcsa igaz (vagy ha a szótár üres).
Bármi() Akkor térjen vissza, Trueha 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)

érdekes cikkek...