10 užitečných metod slovníku Pythonu

Chcete se naučit pracovat se slovníky Pythonu? Tento tutoriál se bude zabývat metodami slovníku Python pro čtení, úpravy a provádění dalších běžných operací ve slovnících Pythonu.

Začneme opakováním základů slovníků Pythonu a poté vytvoříme příkladový slovník a upravíme jej pomocí metod slovníku Pythonu.

Začněme…

Přehled slovníků Pythonu

Slovníky jsou vestavěné datové struktury v Pythonu. Umožňuje ukládat položky do párů klíč–hodnota – definuje přidružení nebo mapování mezi klíči a hodnotami.

Klíče ve slovníku by měly být jedinečné (aby byly hašovatelné). K vyhledání hodnoty můžete použít klíč nebo použít vestavěné metody (brzy se je naučíte).

Při vytváření slovníku Pythonu můžete inicializovat všechny páry klíč–hodnota nebo inicializovat prázdný slovník a poté páry klíč–hodnota přidat.

>>> dict1 = {'language':'Python','like':True}
>>> type(dict1)
<class 'dict'>

# or we can do the following:

>>> dict1 = {}
>>> dict1['language']='Python'
>>> dict1['like']=True

Metody slovníku Python pro běžné operace

Poznámka: Abyste mohli postupovat podle příkladů kódu, musíte mít nainstalovaný Python 3.7 nebo novější.

Můžete spolu kódovat v Python REPL. Nebo pokračujte v online editoru Pythonu etechblog.cz.

>>> person = {'name':'Alice',
...           'city':'Portland',
...           'interest':'Programming',
...           'profession':'Developer'
...           }

Nyní, když jsme inicializovali slovník Pythonu, začněme procházet různé metody slovníku.

Získejte klíče slovníku pomocí klíčů ()

Jednou z běžných operací při práci se slovníkem Pythonu je přístup ke všem klíčům, hodnotám a párům klíč-hodnota. Chcete-li získat klíče slovníku, můžete zavolat metodu keys() podle obrázku:

>>> person.keys()
dict_keys(['name', 'city', 'interest', 'profession'])

Získejte hodnoty slovníku pomocí value()

Metoda values() vrací všechny hodnoty a je užitečná, když chcete tyto hodnoty dále zpracovávat.

Pojďme se dostat ke všem hodnotám ve slovníku osob:

>>> person.values()
dict_values(['Alice', 'Portland', 'Programming', 'Developer'])

Získejte páry klíč–hodnota s položkami()

Metoda items() vrací seznam párů klíč–hodnota. Volání této metody ve slovníku osob proto vrátí seznam n-tic klíč–hodnota:

>>> person.items()
dict_items([('name', 'Alice'), ('city', 'Portland'), ('interest', 'Programming'), 
           ('profession', 'Developer')])

Získejte mělkou kopii pomocí copy()

Metoda copy() vrací mělkou kopii pythonského slovníku.

>>> person_cpy = person.copy()

Person_cpy je zde mělká kopie slovníku osob. Upravme tuto kopii aktualizací klíče ‚name‘ na ‚Bob‘.

>>> person_cpy['name'] = 'Bob'
>>> person_cpy

Když nyní prozkoumáte obsah slovníku, uvidíte, že „jméno“ bylo aktualizováno na „Bob“.

{
 'name': 'Bob', 
 'city': 'Portland', 
 'interest': 'Programming', 
 'profession': 'Developer'
}

Původní slovník osob však nebyl upraven.

>>> person
{
 'name': 'Alice', 
 'city': 'Portland', 
 'interest': 'Programming', 
 'profession': 'Developer'
}

Nastavit výchozí hodnoty pomocí setdefault()

Při práci se slovníky Pythonu je běžné, že narazíte na výjimku KeyError, pokud klíč není ve slovníku přítomen. Zde je příklad, kdy se pokoušíme získat přístup ke klíči „věk“:

>>> person['age']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'age'

Takovým chybám se můžete vyhnout použitím vestavěných metod setdefault() a get() namísto přístupu k hodnotě, jak je uvedeno výše.

  Jak skenovat vaši WiFi síť pro všechna připojená zařízení z vašeho telefonu

Metoda setdefault(key) vrací dict[‘key’] pokud je klíč přítomen v diktátu.

>>> person.setdefault('name')
'Alice'

Pokud klíč není přítomen, přidá klíč do slovníku s výchozí hodnotou Žádný.

>>> person.setdefault('address')
>>> person

Zde klíč „adresa“ není ve slovníku osob přítomen. Ale vidíme, že byla přidána s výchozí hodnotou Žádná.

{
 'name': 'Alice', 
 'city': 'Portland', 
 'interest': 'Programming', 
 'profession': 'Developer', 
 'address': None 
}

Nyní můžeme nastavit klíč „adresa“ na nějakou adresu:

>>> person['address'] = "10, xyz street"
>>> person
{
 'name': 'Alice', 
 'city': 'Portland', 
 'interest': 'Programming', 
 'profession': 'Developer', 
 'address': '10, xyz street' 
}

Můžete také zadat hodnotu ve volání metody, jak je znázorněno:

>>> person.setdefault('country','USA')
'USA'
>>> person

Protože klíč „země“ není původně přítomen ve slovníku osob, vidíme, že byl přidán s hodnotou „USA“.

{
 'name': 'Alice', 
 'city': 'Portland', 
 'interest': 'Programming', 
 'profession': 'Developer', 
 'address': '10, xyz street', 
 'country': 'USA'
}

Získejte konkrétní hodnotu pomocí get()

Metoda get() vrací hodnotu odpovídající klíči. Volitelně také převezme jinou výchozí hodnotu, která se vrátí, pokud klíč není nalezen ve slovníku.

  8 Nástroje pro kontrolu stavu DNS pro odstraňování problémů

Když se pokusíme získat přístup k hodnotě klíče ‚name‘, dostaneme ‚Alice‘, protože klíč je přítomen osobně:

>>> person.get('name')
'Alice'

Slovník osob nemá klíč ‚gpa‘. Takže když se pokusíme získat jeho hodnotu, v Python REPL nedostaneme nic. Pokud však hodnotu vytisknete, dostanete Žádné.

>>> person.get('gpa')
>>> print(person.get('gpa'))
None

Pokud však zadáte nepovinnou výchozí hodnotu, získáme tuto hodnotu místo Žádná.

>>> person.get('gpa','not found')
'not found'

Metoda get() však nepřidává klíč ‚gpa‘ do slovníku.

>>> person
{
 'name': 'Alice', 
 'city': 'Portland', 
 'interest': 'Programming', 
 'profession': 'Developer', 
 'address': '10, xyz street', 
 'country': 'USA'
}

Vysvětlení setdefault() vs. get()

Přestože ke zpracování KeyError lze použít jak metody setdefault() tak get(), pojďme si shrnout rozdíly oproti tomu, co jsme se naučili:

  • dict.setdefault(key,val) přidá klíč s hodnotou val jako výchozí hodnotou. Pokud není zadáno val, bude klíč přidán s výchozí hodnotou None.
  • dict.get(key,val) vrací hodnotu odpovídající klíči ze slovníku Pythonu. Pokud klíč není přítomen, vrátí hodnotu val (pokud je zadán) nebo None – ale nepřidá klíč do slovníku.

Můžete také použít defaultdict v Pythonu pro lepší zpracování KeyErrors.

Aktualizujte obsah slovníku pomocí update()

Existující slovník Pythonu můžete aktualizovat pomocí párů klíč–hodnota z jiného slovníku. Můžete také aktualizovat obsah libovolného iterovatelného Pythonu pomocí metody update().

Pojďme definovat slovník more_details. Poté aktualizujeme slovník osob obsahem ze slovníku more_details:

>>> more_details = {'hobby':'singing', 'likes':'sweets'}
>>> person.update(more_details)

Z výstupu níže vidíme, že do slovníku osob byly přidány klíče ‚hobby‘ a ‚likes‘.

>>> person
{
 'name': 'Alice', 
 'city': 'Portland', 
 'interest': 'Programming', 
 'profession': 'Developer', 
 'address': '10, xyz street', 
 'country': 'USA', 
 'hobby': 'singing', 
 'likes': 'sweets'
}

Odeberte naposledy přidanou položku pomocí popitem()

K odstranění naposledy přidaného páru klíč–hodnota lze použít slovníkovou metodu popitem().

>>> person.popitem()
('likes', 'sweets')

Jak je vidět, volání metody popitem() ve slovníku osob vrátí pár klíč–hodnota („likes“, „sweets“) – poslední přidanou položku ve slovníku.

Odstraní také pár klíč–hodnota. Můžete to potvrdit prozkoumáním obsahu slovníku:

>>> person
{
 'name': 'Alice', 
 'city': 'Portland', 
 'interest': 'Programming', 
 'profession': 'Developer', 
 'address': '10, xyz street', 
 'country': 'USA', 
 'hobby': 'singing'
}

Odebrání položky slovníku pomocí pop()

Víme, že metoda slovníku popitem() odstraňuje a vrací poslední pár klíč–hodnota ve slovníku Pythonu. Někdy však můžeme potřebovat odstranit i jiné položky – kromě posledního přidaného páru klíč–hodnota.

  Jak přejmenovat název domény weblogic?

K tomu můžeme použít pythonskou slovníkovou metodu pop(): pomocí .pop(key) ve slovníku vrátíme hodnotu odpovídající klíči a také odstraníme pár klíč-hodnota ze slovníku.

Zde je příklad:

>>> person.pop('hobby')
'singing'

Když jsme objevili položku odpovídající klíči ‚hobby‘, vidíme, že se již ve slovníku nenachází.

>>> person
{
 'name': 'Alice', 
 'city': 'Portland', 
 'interest': 'Programming', 
 'profession': 'Developer', 
 'address': '10, xyz street', 
 'country': 'USA'
}

Pokud předáme klíč, který neexistuje, narazíme na výjimku KeyError, jak je znázorněno:

>>> person.pop('age')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'age'

Zde narážíme na výjimku KeyError, protože klíč ‚věk‘ není přítomen ve slovníku osob.

Na rozdíl od metody list pop(), která ve výchozím nastavení odstraňuje poslední položku, metoda pop() slovníku vyžaduje klíč. Pokud v metodě neuvedete klíč, narazíme na chyby.

>>> person.pop()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: pop expected at least 1 argument, got 0

Smazat všechny položky slovníku pomocí clear()

Metody dictionary pop() a popitem() odstraňují vždy jeden pár klíč–hodnota. Pokud chcete odstranit všechny položky ve slovníku, můžete použít metodu clear().

>>> person.clear()
>>> person
{}

Jak je vidět, volání metody clear() ve slovníku osob odstraní všechny páry klíč–hodnota a slovník osoby je nyní prázdný.

Shrnutí metod slovníku Python

Zde je rychlý přehled metod slovníku Pythonu, které jsme se naučili.

MethodSyntaxDescriptionkeys()dict1.keys()Vrátí klíče dict1values()dict1.values()Vrátí hodnoty dict1items()dict1.items()Vrátí seznam všech párů klíč–hodnota v dict1copy()dict1.copy() Vrátí mělkou kopii dict1setdefault()dict1.setdefault(key, default_value)– Přidá klíč s volitelnou default_value jako klíč k dict1 (pokud není zadán, výchozí hodnota je None)
– Vrací dict1[key] pokud je klíč již presentget()dict1.get(key,default_value)– Vrátí dict1[key] pokud je klíč přítomen v dict1; Jinak vrátí výchozí_hodnotu
– Pokud klíč není přítomen v dict1 a není zadán default_value, vrátí Noneupdate()dict1.update(iterable1)Updates dict1 pomocí párů klíč–hodnota z iterable1popitem()dict1.popitem()Odstraní a vrátí poslední pár klíč–hodnota z dict1pop()dict1.pop(key)– Odebere a vrátí hodnotu odpovídající klíči: dict1[key]
– Vyvolá chybu KeyError, pokud klíč není přítomen v dict1clear()dict1.clear()Smaže všechny položky z dict1

Závěr

Naučili jste se, jak používat běžné metody k provádění operací čtení, aktualizace a mazání ve slovnících Pythonu. Kromě toho jste se také dozvěděli, jak lze metody get() a setdefault() použít ke zpracování výjimek KeyError vrácením výchozí hodnoty a přidáním položky s výchozí hodnotou do slovníku Pythonu. Slovník Pythonu můžete také třídit podle klíče nebo hodnoty.

Dále se podívejte na seznam užitečných metod seznamu Python. Šťastné kódování!