10 hasznos Python szótári módszer

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…

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.

  Használja ezt az alkalmazást az autózaj diagnosztizálására és a hiba kiderítésére

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 11 legjobb online ruhaeladási alkalmazás

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.

  A 6 legjobb online biztonsági szoftver kis- és középvállalkozások számára

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!