Programovací jazyk Python má mnoho užitečných datových struktur, které usnadňují práci s různými typy informací. Jedním z takových nástrojů je třída defaultdict z modulu collections. Tato třída vám umožňuje vytvářet slovníky s přednastavenými hodnotami, což usnadňuje proces práce s daty a zabraňuje chybám.
Třída defaultdict je podtřída běžného slovníku dict, ale s jedním důležitým rozdílem - umožňuje definovat výchozí hodnotu pro klíče, které ještě nejsou ve slovníku. Když se tedy obrátíte na chybějící klíč, defaultdict automaticky vytvoří nový záznam s přednastavenou hodnotou. To je velmi užitečné, pokud potřebujete uložit hodnoty určitého typu dat nebo se vyhnout ruční kontrole klíčů a jejich přidání do slovníku.
Použití defaultdict je jednoduché a pohodlné. Nejprve musíte importovat modul collections a poté vytvořit objekt defaultdict. Konstruktor bere funkci jako argument, který určuje výchozí hodnotu. Výsledný objekt lze použít stejně jako běžný slovník, pouze s rozdílem, že při dotazu na hodnotu chybějícího klíče se vrátí hodnota definovaná při vytváření objektu.
Kromě toho lze při použití defaultdict určit výchozí hodnotu pro každý nový klíč jako výsledek výkonu funkce. Použití funkce umožňuje větší flexibilitu a kontrolu při práci s hodnotami, díky čemuž je defaultdict nepostradatelným nástrojem pro mnoho úkolů v Pythonu.
Jak používat defaultdict v Pythonu
Chcete - li začít používat defaultdict, musíte jej importovat z modulu collections:
from collections import defaultdict
Poté můžete vytvořit instanci defaultdict zadáním výchozí hodnoty:
d = defaultdict(int)
Tento příklad používá argument int k nastavení výchozí hodnoty na nulu. Jako argument však můžete použít jakoukoli hodnotu nebo dokonce funkci.
Mezi hlavní metody defaultdict patří:
- default_factory je funkce nebo třída, kterou je třeba použít k vytvoření výchozích hodnot.
- __ missing_ _ (key) je metoda, která je vyvolána při manipulaci s neexistujícím klíčem.
Příklad použití defaultdict:
from collections import defaultdictd = defaultdict(int)d['apple'] = 5d['banana'] = 3
V tomto příkladu, přístup k klíčům 'apple ' a' banana ' vrátí odpovídající hodnoty nastavené explicitně. Při přístupu k klíči 'orange' však slovník použije výchozí hodnotu, která byla nastavena při vytváření defaultdict, a vrátí nulu.
Defaultdict je velmi užitečný, když potřebujete automaticky inicializovat nové klíče ve slovníku a nechcete je pokaždé kontrolovat.
Co je defaultdict?
Když se obrátíte na klíč, který není ve slovníku, defaultdict automaticky vytvoří tento klíč s výchozí hodnotou, kterou lze nastavit při inicializaci defaultdict. Defaultdict vám tedy umožňuje používat slovník, aniž byste se museli starat o kontrolu klíče před přístupem k jeho hodnotě.
Třída defaultdict je podobná běžnému slovníku (dict) se svými metodami keys (), values (), items () a dalšími. Defaultdict má však při inicializaci další argument-tovární funkci, která je volána k provádění akcí při přístupu k novému klíči. Tento výchozí argument může být funkce, třída nebo jakýkoli jiný volaný objekt.
DefaultDict může být zvláště užitečný při práci s analýzou textových dat, kde můžeme mít mnoho jedinečných slov a potřebujeme pohodlný přístup k počítadlům slov.
Jak importovat defaultdict
Chcete-li použít třídu defaultdict v Pythonu, musíte ji importovat z modulu collections. Chcete-li to provést, použijte na začátku kódu (nebo souboru) následující pokyny:
| Import | Popis |
|---|---|
| from collections import defaultdict | Importuje třídu defaultdict z modulu collections. |
Po provedení tohoto pokynu budete moci používat všechny funkce třídy defaultdict. Nyní se podívejme na některé základní příklady použití defaultdict.
Vytvoření defaultdict
Chcete-li vytvořit defaultdict , musíte nejprve importovat modul collections :
from collections import defaultdict
Poté můžete vytvořit instanci defaultdict a zadat výchozí funkci nebo typ dat:
d = defaultdict(int)
V tomto příkladu, pokud se podíváme na neexistující klíč, vrácená hodnota bude 0 .
Můžete také zadat jinou funkci, jako je list, a vytvořit defaultdict, který vrátí prázdný seznam pro každý chybějící klíč:
d = defaultdict(list)
Nyní, když se obrátíte na neexistující klíč, vrátí se prázdný seznam.
Obecně platí, že vytvoření defaultdict umožňuje nastavit výchozí funkci nebo datový typ, který se vrátí, když přistupujete k chybějícím klíčům.
Použití defaultdict tedy šetří čas a zjednodušuje kód tím, že odmítá kontroly dostupnosti klíčů.
Přidání prvků do defaultdict
Přidání prvků do defaultdict se provádí pomocí metody _ _ getitem__ (). Pokud ve slovníku chybí požadovaný klíč, defaultdict spustí tovární funkci (nastavenou při vytváření defaultdict) a vrátí nový objekt-hodnotu. Tento objekt je uložen ve slovníku a vázán na požadovaný klíč.
Zvažte například následující kód, který používá defaultdict k počítání počtu položek v seznamu:
from collections import defaultdict# Создаем defaultdict с типом intcounter = defaultdict(int)names = ["Alice", "Bob", "Alice", "Charlie", "Bob", "Alice"]# Подсчитываем количество вхождений каждого имениfor name in names:counter[name] += 1print(counter) # defaultdict(, )
V tomto příkladu je vytvořen prázdný slovník counter s typem int. Když se obrátíte na neexistující klíč, hodnota int bude 0. Poté dojde k iteraci podle seznamu names a zvýšení hodnoty counter pro každé jméno.
V důsledku provádění kódu dostaneme defaultdict, ve kterém jsou klíče názvy a hodnoty počet vstupů každého jména do seznamu jmen.
Extrahování hodnot z defaultdict
Modul collections v Pythonu poskytuje třídu defaultdict, která poskytuje pohodlnější způsob práce se slovníky. Když však chceme získat hodnoty z defaultdict, vyvstává otázka, jak to udělat.
Při použití defaultdict místo běžného slovníku se můžeme vyhnout vyloučení KeyError při manipulaci s neexistujícím klíčem. Místo toho, při prvním oslovení neexistujícího klíče, defaultdict automaticky vytvoří prázdnou hodnotu tohoto klíče pomocí předem dané funkce-továrny.
Chcete-li extrahovat hodnoty z defaultdict, můžeme použít několik způsobů:
- Použití indexačního operátora []. Pokud máme například defaultdict s názvem d a klíčem k, můžeme použít následující konstrukci: d[k]. Pokud tento klíč chybí, defaultdict automaticky vytvoří prázdnou hodnotu a vrátí ji.
- Použití metody get(). Metoda get () umožňuje zadat výchozí hodnotu, která bude vrácena, pokud klíč chybí. Například d. get (k, default_value) vrátí default_value, pokud klíč k neexistuje v defaultdict d.
Extrakce hodnot z defaultdict tedy nezpůsobuje potíže. V závislosti na úkolu si můžeme vybrat vhodný způsob extrakce hodnot z defaultdict vzhledem k našim potřebám.
Užitečné metody pro práci s defaultdict
Metoda defaultdict.get(key, default=None)
Tato metoda umožňuje získat hodnotu z defaultdict na klíč. Pokud klíč existuje, metoda vrátí jeho hodnotu, jinak vrátí výchozí hodnotu, která může být uvedena druhým argumentem. Pokud není zadána výchozí hodnota, vrátí se výchozí hodnota nastavená při vytváření defaultdict.
Metoda defaultdict.pop(key, default=None)
Tato metoda odstraní hodnotu z defaultdict pomocí klíče a vrátí ji. Pokud klíč neexistuje, metoda na rozdíl od běžného slovníku nezpůsobuje chybu KeyError, ale vrací výchozí hodnotu. Pokud není zadána výchozí hodnota, vrátí se výchozí hodnota nastavená při vytváření defaultdict.
Tato metoda odstraní a vrátí pár (klíč, hodnota) z defaultdict. Pokud je defaultdict prázdný, metoda způsobí chybu KeyError.
Tato metoda odstraňuje všechny prvky defaultdict, takže je prázdná.
Použití těchto metod může výrazně usnadnit práci s defaultdict tím, že nám umožní přijímat a odebírat hodnoty najednou s kontrolou dostupnosti klíče a zadáním výchozích hodnot, aniž bychom museli používat podmínky a výjimky.