List Comprehension je praktický a rychlejší způsob vytváření seznamů v Pythonu na jediném řádku kódu. Pomáhá nám psát snadno čitelné smyčky for na jediném řádku.
Slovník je v jazyce Python datová struktura pro ukládání dat tak, že každý prvek uložených dat je spojen s klíčem. Slovníková datová struktura umožňuje velmi efektivně se dotazovat na data pomocí klíče.
Myšlenka porozumění není v jazyce Python jedinečná pouze pro seznamy. Slovníky, jedna z běžně používaných datových struktur v datové vědě, také umí porozumění. Pomocí dict comprehension neboli slovníkového porozumění lze snadno vytvářet slovníky.
Pamatujte si, že v jazyce Python je seznam definován hranatými závorkami a slovník je definován kudrnatými závorkami {}. Myšlenka použitá při definici seznamového porozumění je přenesena i při definici dictového porozumění. Porozumění diktů je definováno podobnou syntaxí, ale s dvojicí klíč:hodnota ve výrazu.
- {klíč:hodnota pro i v seznamu}
Podívejme se na 5 jednoduchých příkladů použití porozumění diktů pro snadné vytváření nových slovníků.
Přidán šestý příklad porozumění diktů pro mazání klíčů ve slovníku.
Příklad 1 porozumění diktátu
Podívejme se na rychlý příklad vytvoření porozumění diktátu ze seznamu čísel.
Použijeme seznam čísel a vytvoříme slovník s řetězcovou hodnotou čísla jako klíčem a číslem jako hodnotou.
# dict comprehension to create dict with numbers as values>{str(i):i for i in }{'1': 1, '3': 3, '2': 2, '5': 5, '4': 4}
Příklad porozumění dict 2
Řekněme, že máme seznam ovoce a můžeme pomocí porozumění dict vytvořit slovník s ovocem, prvky seznamu jako klíči a délkou jednotlivých řetězců jako hodnotami.
# create list of fruits>fruits = # dict comprehension to create dict with fruit name as keys>{f:len(f) for f in fruits}{'cherry': 6, 'mango': 5, 'apple': 5, 'banana': 6}
Příklad porozumění dict 3
Vytvoříme slovník pomocí porozumění dict tak, že jako klíče budou prvky seznamu a jako hodnoty prvky s prvním velkým písmenem.
>{f:f.capitalize() for f in fruits}{'cherry': 'Cherry', 'mango': 'Mango', 'apple': 'Apple', 'banana': 'Banana'}
Příklad porozumění dict 4
Použijeme funkci enumerate v porozumění dict. Pokud jste nepoužili funkci enumerate: enumerate může vzít jako vstup jakoukoli iterovatelnou věc a vrátí prvek a jeho index.
Tady použijeme funkci enumerate na seznamu, abychom vytvořili index a tuply prvků seznamu a použili je k vytvoření slovníku s porozuměním dict. Vytvoříme slovník s prvky seznamu jako klíči a indexy prvků jako hodnotami. Takové slovníky s indexem prvků jsou často užitečné v různých scénářích.
# dict comprehension example using enumerate function>{f:i for i,f in enumerate(fruits)}{'cherry': 3, 'mango': 1, 'apple': 0, 'banana': 2}
Příklad 5 s porozuměním dict
Dalším použitím porozumění dict je obrácení vztahu klíč:hodnota v existujícím slovníku. Někdy můžete chtít vytvořit nový slovník z existujícího adresáře tak, že role dvojice klíč:hodnota v prvním slovníku bude v novém slovníku obrácená. Můžeme použít funkci Dict Comprehension a převrátit slovník element to index na slovník index to element.
# dict comprehension example to reverse key:value pair in a dictionary>f_dict = {f:i for i,f in enumerate(fruits)}>f_dict{'apple': 0, 'banana': 2, 'cherry': 3, 'mango': 1}# dict comprehension to reverse key:value pair in a dictionary>{v:k for k,v in f_dict.items()}{0: 'apple', 1: 'mango', 2: 'banana', 3: 'cherry'}
Pomocí funkce dictionaries‘ items jsme získali dvojice klíč, hodnota ve stávajícím slovníku a vytvořili nový slovník, kde klíče v původním slovníku jsou hodnoty v novém slovníku a naopak.
Příklad 6: Jak odstranit vybrané klíče ze slovníku pomocí funkce Dict Comprehension?
Řekněme, že máte slovník a chcete vytvořit nový slovník odstraněním určité dvojice klíč-hodnota. Pomocí nástroje Dict Comprehension můžeme ze slovníku odstranit vybrané dvojice klíč-hodnota a vytvořit nový slovník.
Použijeme slovník „fruit“, který jsme vytvořili výše.
fruits = f_d1 ={f:f.capitalize() for f in fruits}f_d1
Pomocí nástroje diction comprehension odstraníme ze slovníku fruit dva klíče, jablko a banán, a jejich hodnoty.
# keys to be removed>remove_this = {'apple','cherry'}# dict comprehension example to delete key:value pairs in a dictionary>{key:f_d1 for key in f_d1.keys() - remove_this}{'banana': 'Banana', 'mango': 'Mango'}
Jednoduše jsme odstranili klíče, jablko a třešeň, pomocí objektu dict keys s operací set a nový slovník nyní obsahuje pouze banán a mango.