Szeretné megtanulni a Python szótárak használatát? Ez az oktatóanyag a Python szótári módszerekkel foglalkozik a Python szótárak olvasásához, módosításához és egyéb gyakori műveleteinek végrehajtásához.
Kezdjük azzal, hogy áttekintjük a Python szótárak alapjait, majd létrehozunk egy példaszótárt, és Python szótármódszerekkel módosítjuk.
Kezdjük el…
Tartalomjegyzék
A Python szótárak áttekintése
A szótárak a Python beépített adatstruktúrái. Lehetővé teszi az elemek tárolását kulcs-érték párokban – társítást vagy leképezést definiálva a kulcsok és értékek között.
A szótár kulcsainak egyedinek kell lenniük (hogy kivonatozhatók legyenek). A kulcs segítségével megkeresheti az értéket, vagy használhat beépített módszereket (hamarosan megtanulja őket).
Python szótár létrehozásakor inicializálhatja az összes kulcs-érték párt, vagy inicializálhat egy üres szótárt, majd hozzáadhatja a kulcs-érték párokat.
>>> dict1 = {'language':'Python','like':True} >>> type(dict1) <class 'dict'> # or we can do the following: >>> dict1 = {} >>> dict1['language']='Python' >>> dict1['like']=True
Python szótár módszerei általános műveletekhez
Megjegyzés: A kódpéldák követéséhez telepítenie kell a Python 3.7-es vagy újabb verzióját.
Kódolhat Python REPL-ben. Vagy kövesse a etoppc.com online Python szerkesztőjében.
>>> person = {'name':'Alice', ... 'city':'Portland', ... 'interest':'Programming', ... 'profession':'Developer' ... }
Most, hogy inicializáltunk egy Python szótárt, kezdjük el a különféle szótári módszerek áttekintését.
Szerezze be a szótár kulcsait a kulcsokkal ()
A Python-szótárral végzett munka során az egyik gyakori művelet az összes kulcs, érték és kulcs-érték pár elérése. A szótár kulcsainak lekéréséhez hívja meg a keys() metódust az ábrán látható módon:
>>> person.keys() dict_keys(['name', 'city', 'interest', 'profession'])
Szerezze be a szótári értékeket a Values() segítségével
A value() metódus az összes értéket visszaadja, és akkor hasznos, ha ezeket az értékeket tovább szeretné feldolgozni.
Hozzáférjünk a személyszótár összes értékéhez:
>>> person.values() dict_values(['Alice', 'Portland', 'Programming', 'Developer'])
Kulcs-érték párok beszerzése tételekkel ()
Az items() metódus a kulcsérték sorok listáját adja vissza. Ezért ennek a metódusnak a meghívása a személyszótárban a kulcsérték sorok listáját adja vissza:
>>> person.items() dict_items([('name', 'Alice'), ('city', 'Portland'), ('interest', 'Programming'), ('profession', 'Developer')])
Sekély másolat beszerzése copy()
A copy() metódus egy Python szótár sekély másolatát adja vissza.
>>> person_cpy = person.copy()
Itt a person_cpy a személy szótár sekély másolata. Módosítsuk ezt a másolatot úgy, hogy a „name” kulcsot „Bob”-ra frissítjük.
>>> person_cpy['name'] = 'Bob' >>> person_cpy
Ha most megvizsgálja a szótár tartalmát, láthatja, hogy a „név” „Bob”-ra módosult.
{ 'name': 'Bob', 'city': 'Portland', 'interest': 'Programming', 'profession': 'Developer' }
Az eredeti személyszótár azonban nem módosult.
>>> person
{ 'name': 'Alice', 'city': 'Portland', 'interest': 'Programming', 'profession': 'Developer' }
Állítsa be az alapértelmezett értékeket a setdefault() segítségével
Python szótárak használatakor gyakran előfordul KeyError kivétel, ha a kulcs nem szerepel a szótárban. Íme egy példa, amikor megpróbáljuk elérni az „életkor” kulcsot:
>>> person['age'] Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 'age'
Az ilyen hibákat elkerülheti a beépített setdefault() és get() metódusok használatával, ahelyett, hogy a fenti értékhez hozzáférne.
A setdefault(key) metódus dict értéket ad vissza[‘key’] ha a kulcs jelen van a diktatúrában.
>>> person.setdefault('name') 'Alice'
Ha a kulcs nincs jelen, hozzáadja a kulcsot a szótárhoz az alapértelmezett None értékkel.
>>> person.setdefault('address') >>> person
Itt a „cím” kulcs nem szerepel a személyi szótárban. De látjuk, hogy az alapértelmezett None értékkel lett hozzáadva.
{ 'name': 'Alice', 'city': 'Portland', 'interest': 'Programming', 'profession': 'Developer', 'address': None }
Most már beállíthatjuk a ‘cím’ kulcsot bizonyos címekre:
>>> person['address'] = "10, xyz street"
>>> person
{ 'name': 'Alice', 'city': 'Portland', 'interest': 'Programming', 'profession': 'Developer', 'address': '10, xyz street' }
Az értéket a metódushívásban is megadhatja, az alábbi módon:
>>> person.setdefault('country','USA') 'USA' >>> person
Mivel az „ország” kulcs eredetileg nem szerepel a személyszótárban, úgy látjuk, hogy az „USA” értékkel adtuk hozzá.
{ 'name': 'Alice', 'city': 'Portland', 'interest': 'Programming', 'profession': 'Developer', 'address': '10, xyz street', 'country': 'USA' }
Adott érték beszerzése a get()
A get() metódus a kulcsnak megfelelő értéket adja vissza. Opcionálisan egy másik alapértelmezett értéket is felvesz, amelyet akkor ad vissza, ha a kulcs nem található a szótárban.
Amikor megpróbáljuk elérni a ‘name’ kulcs értékét, az ‘Alice’-t kapjuk, mivel a kulcs személyesen jelen van:
>>> person.get('name') 'Alice'
A személyi szótárnak nincs „gpa” kulcsa. Tehát amikor megpróbáljuk megszerezni az értékét, nem kapunk semmit a Python REPL-ben. Ha azonban kinyomtatja az értéket, akkor a Nincs értéket kapja.
>>> person.get('gpa') >>> print(person.get('gpa')) None
De ha megadja az opcionális alapértelmezett értéket, akkor ezt az értéket kapjuk a None helyett.
>>> person.get('gpa','not found') 'not found'
A get() metódus azonban nem adja hozzá a „gpa” kulcsot a szótárhoz.
>>> person
{ 'name': 'Alice', 'city': 'Portland', 'interest': 'Programming', 'profession': 'Developer', 'address': '10, xyz street', 'country': 'USA' }
A setdefault() vs. get() megértése
Bár a setdefault() és get() metódusok is használhatók a KeyError kezelésére, foglaljuk össze a különbségeket a tanultaktól:
- A dict.setdefault(key,val) hozzáadja a kulcsot a val alapértelmezett értékkel. Ha az érték nincs megadva, a kulcshoz az alapértelmezett None érték kerül hozzáadásra.
- A dict.get(key,val) a Python szótár kulcsának megfelelő értéket adja vissza. Ha a kulcs nincs jelen, akkor értéke értéket (ha van) vagy None-t ad vissza, de nem adja hozzá a kulcsot a szótárhoz.
A Pythonban a defaultdict használatával is jobban kezelheti a KeyError-okat.
A szótár tartalmának frissítése az update() segítségével
Frissíthet egy meglévő Python-szótárt egy másik szótár kulcs-érték párjaival. Bármely Python iterálható elem tartalmával is frissíthet az update() metódus használatával.
Határozzuk meg a more_details szótárat. Ezt követően frissítjük a személyszótárt a more_details szótár tartalmával:
>>> more_details = {'hobby':'singing', 'likes':'sweets'} >>> person.update(more_details)
Az alábbi kimenetből azt látjuk, hogy a „hobbi” és a „tetszik” billentyűk hozzáadva a személyi szótárhoz.
>>> person
{ 'name': 'Alice', 'city': 'Portland', 'interest': 'Programming', 'profession': 'Developer', 'address': '10, xyz street', 'country': 'USA', 'hobby': 'singing', 'likes': 'sweets' }
Távolítsa el az utoljára hozzáadott elemet a popitem() segítségével
A popitem() szótár módszerrel eltávolítható az utoljára hozzáadott kulcs-érték pár.
>>> person.popitem() ('likes', 'sweets')
Amint látható, a popitem() metódus meghívása a személyi szótárban a (‘likes’, ‘sweets’) kulcs-értékpárt adja vissza – a szótár utoljára hozzáadott elemét.
Eltávolítja a kulcs-érték párt is. Ezt megerősítheti a szótár tartalmának áttekintésével:
>>> person
{ 'name': 'Alice', 'city': 'Portland', 'interest': 'Programming', 'profession': 'Developer', 'address': '10, xyz street', 'country': 'USA', 'hobby': 'singing' }
Szótárelem eltávolítása a pop()
Tudjuk, hogy a popitem() szótár metódus eltávolítja és visszaadja a Python szótár utolsó kulcs-érték párját. Előfordulhat azonban, hogy más elemeket is el kell távolítanunk – az utoljára hozzáadott kulcs-érték páron kívül is.
Ehhez használhatjuk a Python szótár pop() metódusát: a .pop(key) szótárban a kulcsnak megfelelő értéket adja vissza, és a kulcs-érték párost is eltávolítja a szótárból.
Íme egy példa:
>>> person.pop('hobby') 'singing'
Ahogy felbukkant a ‘hobbi’ kulcsnak megfelelő elem, azt látjuk, hogy az már nem szerepel a szótárban.
>>> person
{ 'name': 'Alice', 'city': 'Portland', 'interest': 'Programming', 'profession': 'Developer', 'address': '10, xyz street', 'country': 'USA' }
Ha olyan kulcsot adunk át, amely nem létezik, akkor KeyError kivételt kapunk, amint látható:
>>> person.pop('age') Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 'age'
Itt egy KeyError kivételbe ütközünk, mivel az „age” kulcs nem szerepel a személyi szótárban.
A list pop() metódussal ellentétben, amely alapértelmezés szerint eltávolítja az utolsó elemet, a szótár pop() metódusához kulcsra van szükség. Ha nem ad meg kulcsot a metódusban, hibákba ütközünk.
>>> person.pop() Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: pop expected at least 1 argument, got 0
Az összes szótári elem törlése a clear() segítségével
A szótár pop() és popitem() metódusai egyszerre egy kulcs-érték párt távolítanak el. Ha egy szótár összes elemét törölni szeretné, használhatja a clear() metódust.
>>> person.clear() >>> person {}
Amint látható, a clear() metódus meghívása a személyi szótárban eltávolítja az összes kulcs-értékpárt, és a személyi szótár üres.
A Python szótár módszereinek összefoglalása
Íme egy gyors áttekintés az általunk tanult Python szótári módszerekről.
MethodSyntaxDescriptionkeys()dict1.keys()A dict1values()dict1.values()értékeket adja eredményül: dict1items()dict1.items()A dict1copy()dict1 összes kulcs-érték párjának listáját adja vissza. A dict1setdefault()dict1.setdefault(kulcs, alapértelmezett_érték) sekély másolatát adja vissza – a dict1 kulcsaként hozzáad egy kulcsot az opcionális default_value értékkel (ha nincs megadva, az alapértelmezett érték None)
– Visszaadja a dict1-et[key] ha a kulcs már jelenget()dict1.get(kulcs,alapértelmezett_érték)– A dict1 értéket adja vissza[key] ha a kulcs szerepel a dict1-ben; Ellenkező esetben az alapértelmezett_értéket adja vissza
– Ha a kulcs nem szerepel a dict1-ben, és a default_value nincs megadva, akkor a Noneupdate()dict1.update(iterable1)Frissíti a dict1-et kulcs-érték párokkal a következőből: iterable1popitem()dict1.popitem()Eltávolítja és visszaadja az utolsó kulcs-érték párt innen: dict1pop()dict1.pop(key) – Eltávolítja és visszaadja a kulcsnak megfelelő értéket: dict1[key]
– KeyError értéket ad, ha a kulcs nem szerepel a dict1clear()dict1-ben.clear()Törli az összes elemet a dict1-ből
Következtetés
Megtanulta, hogyan használhat általános módszereket Python-szótárak olvasási, frissítési és törlési műveleteinek végrehajtására. Ezenkívül azt is megtanulta, hogy a get() és a setdefault() metódusok hogyan használhatók a KeyError-kivételek kezelésére úgy, hogy egy alapértelmezett értéket adnak vissza, és egy alapértelmezett értéket tartalmazó bejegyzést adnak hozzá a Python szótárhoz. A Python-szótárat kulcs vagy érték szerint is rendezheti.
Ezután tekintse meg a hasznos Python-listamódszerek listáját. Boldog kódolást!