A listaösszeállítás egy praktikus és gyorsabb módja a listák létrehozásának Pythonban egyetlen sornyi kóddal. Segítségével könnyen olvasható for ciklusokat írhatunk egyetlen sorban.
A Pythonban a szótár egy adatszerkezet az adatok tárolására úgy, hogy a tárolt adatok minden egyes eleméhez egy kulcs tartozik. A szótár adatszerkezet lehetővé teszi, hogy az adatokat a kulcs segítségével nagyon hatékonyan lekérdezzük.
A megértés gondolata nem csak a Pythonban található listákra jellemző. A szótárak, az adattudományban gyakran használt adatszerkezetek egyike szintén képes a megértésre. A dict comprehension vagy dictionary comprehension segítségével könnyen létrehozhatunk szótárakat.
Memlékezzünk arra, hogy pythonban a listát szögletes zárójelekkel, a szótárat pedig szögletes zárójelekkel {} definiáljuk. A lista-megértésnél használt ötletet a dict-megértés definiálásánál is átvesszük. A dict megértést hasonló szintaxissal definiáljuk, de kulcs:érték párossal a kifejezésben.
- {key:value for i in list}
Lássunk 5 egyszerű példát a dict megértés használatára, amellyel könnyen hozhatunk létre új szótárakat.
Hatodik példaként hozzáadtuk a dict megértést a kulcsok törlésére egy szótárban.
Dict Comprehension Example 1
Lássunk egy gyors példát a dict comprehension létrehozására egy számlistából.
Használjunk egy számlistát, és hozzunk létre egy szótárat a szám string értékével, mint kulcs és a számmal, mint értékekkel.
# 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}
Dict comprehension példa 2
Tegyük fel, hogy van egy gyümölcsökből álló listánk, és a dict comprehension segítségével létrehozhatunk egy szótárat a gyümölcsökkel, a lista elemeivel mint kulcsokkal és az egyes stringek hosszával mint értékekkel.
# 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}
Dict megértési példa 3
Hozzunk létre egy szótárat dict megértéssel úgy, hogy a lista elemei legyenek a kulcsok, és az első nagybetűs elemek az értékek.
>{f:f.capitalize() for f in fruits}{'cherry': 'Cherry', 'mango': 'Mango', 'apple': 'Apple', 'banana': 'Banana'}
Dict megértési példa 4
Használjuk az enumerate függvényt a szótár megértésben. Ha még nem használtad az enumerate függvényt: az enumerate bármilyen iterálható dolgot képes bemenetként fogadni, és visszaadja az elemet és annak indexét.
Itt az enumerate függvényt használjuk a listán, hogy létrehozzuk az indexet és a listaelem-tuplikat, és felhasználjuk őket egy szótár létrehozásához a dict megértéssel. Létrehozunk egy szótárat, amelynek kulcsai a lista elemei, értékei pedig az elemek indexe. Az ilyen elemindexszel rendelkező szótárak gyakran hasznosak különböző forgatókönyvekben.
# dict comprehension example using enumerate function>{f:i for i,f in enumerate(fruits)}{'cherry': 3, 'mango': 1, 'apple': 0, 'banana': 2}
Dict megértés 5. példa
A dict megértés másik felhasználási módja a kulcs:érték megfordítása egy meglévő szótárban. Előfordulhat, hogy egy meglévő szótárból új szótárat szeretnénk létrehozni úgy, hogy az első szótárban lévő kulcs:érték pár szerepe az új szótárban megforduljon. Használhatjuk a Dict Comprehensiont, és megfordíthatjuk az elemet az index szótárból az elem szótárba mutató indexre.
# 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'}
A dictionaries’ items függvényt használtuk a kulcs-érték párok megszerzésére egy meglévő szótárban, és létrehoztunk egy új szótárt, ahol az eredeti szótárban lévő kulcsok az új szótár értékei, és fordítva.
Dict Comprehension Example 6: Hogyan törölhetünk kiválasztott kulcsokat a szótárból a Dict Comprehension segítségével?
Tegyük fel, hogy van egy szótárunk, és egy új szótárat szeretnénk létrehozni bizonyos kulcs-érték párok eltávolításával. A Dict Comprehension segítségével eltávolíthatjuk a kiválasztott kulcs-érték párokat egy szótárból, és létrehozhatunk egy új szótárat.
Használjuk a fent létrehozott “gyümölcs” szótárat.
fruits = f_d1 ={f:f.capitalize() for f in fruits}f_d1
A diction comprehension segítségével eltávolíthatunk két kulcsot, az almát és a banánt, valamint azok értékeit a gyümölcs szótárból.
# 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'}
Eltávolítottuk a kulcsokat, az almát és a cseresznyét, egyszerűen a dict keys objektum használatával, set műveletekkel, és most az új szótár csak banánt és mangót tartalmaz.