A Pythonban a szótár adatértékek rendezetlen halmaza, amely használható értékek kezelésére és tárolására, például egy térképre. Más adattípusoktól eltérően, amelyek csak egy adott értéket hordozhatnak elemként, a szótár kulcs-érték párost tartalmazhat. A szótár kulcs-érték párost tartalmaz a hatékonyabbá tétel érdekében. A polimorfizmus nem megengedett a szótári kulcsokban. A szótár Pythonban úgy épül fel, hogy egy sor bejegyzést kapcsos zárójelek közé tesz, és vesszővel választja el őket. A szótár értékpárokat tárol, amelyek közül az egyik a Key, a másik pedig a Key:value pár elem.
A szótárban az értékek bármilyen adatszerkezetűek lehetnek, és akár replikálhatók is, de nem másolhatók át olyan kulcsok, amelyeknek változtathatatlannak kell lenniük.
Kulcs ellenőrzése a szótárban
A Pythonban a szótár valóban hasznos adatstruktúra, amely kulcs-érték párokat tárol. A programozás során gyakran szükséges egy adott kulcs értékének lekérése egy szótárból; azonban egy adott kulcs megléte a szótárban nem mindig garantált. Ennek eredményeként érdemes még egyszer ellenőrizni, hogy egy kulcs a szótárhoz tartozik-e, mielőtt lekérné az értékét.
A has_key() használata
Ha egy adott kulcs megtalálható a szótárban, a has_key() a metódus igazat ad vissza; egyébként hamis értéket ad vissza.
A Python 3 ezt elavulttá tette. Ez a módszer akkor használható, ha a Python 3-nál régebbi verzión futunk.
Az alábbi paranccsal megerősítheti a Python-verziót cmd-ben.
Kód:
import sys print(sys.version) Animals = {'1': 'Cat', '2':'Rat', '3':'Bat'} key_to_check_for = '2' if Animals.has_key(key_to_check_for): print('Key exists in Animals') else: print(f'There is no key {key_to_check_for} in Animals')
Kimenet:
--------------------------------------------------------------------------- AttributeError Traceback (most recent call last) Input In [37], in () 1 Animals = {'1': 'Cat', '2':'Rat', '3':'Bat'} 2 key_to_check_for = '2' ----> 3 if Animals.has_key(key_to_check_for): 4 print('Key exists in Animals') 5 else: AttributeError: 'dict' object has no attribute 'has_key'
Mivel ez a kód Python 3-on futott, hibát jelez.
if-in Nyilatkozat
Ez a módszer az if-in utasítás segítségével ellenőrzi, hogy létezik-e egy adott kulcs a szótárban. A tagsági operátort alkalmazzuk ban ben , ebben az értelemben. Ez az operátor annak meghatározására szolgál, hogy az egyik érték egy másikhoz tartozik-e. Logikai eredményt ad.
Kód:
faktoriális java
Animals = {'1': 'Cat', '2':'Rat', '3':'Bat'} Key = '2' if '2' in Animals: print('Key exists in Animals') else: print(f'There is no key {key} in Animals')
Kimenet:
Key exists in Animals
Most nézzük a negatív esetet.
Kód:
Animals = {'1': 'Cat', '2':'Rat', '3':'Bat'} if '4' in Animals: print('Key exists in Animals') else: print(f'There is no key {key} in Animals')
Kimenet:
There is no key '4' in Animals
Hasonlóképpen a nem bent operátor használható annak ellenőrzésére, hogy nem létezik-e kulcs a szótárban. Ne feledje azonban, hogy a ban ben a művelet megkülönbözteti a kis- és nagybetűket, ezért vagy ellenőrizze, hogy minden billentyű azonos-e a kis- és nagybetűkkel, vagy használja a magasabb() vagy Alsó() mód.
Kód:
Animals = {'one': 'Cat', 'two':'Rat', 'three':'Bat'} setting_case = set(key.upper() for key in Animals) key_to_check_for = 'two' if key_to_check_for.upper() in setting_case: print('Key exists in Animals') else: print(f'There is no key {key_to_check_for} in Animals')
Kimenet:
Key exists in Animals
A get() metódus használata
A get() metódus megadja a kapcsolódó kulcs értékét egy szótárban. Ha a kulcs nincs ott, akkor vagy a Nincs értéket, vagy egy alapértelmezett értéket ad vissza (ha van ilyen). Kulcsot adhatunk át ennek a metódusnak, és megnézhetjük, hogy létezik-e az adott Python szótárban.
A get() függvény szintaxisa:
dict_name.get(keyname, value)
Itt a dict name a használni kívánt szótár címe.
Paraméterek
Kód:
Animals = {'1': 'Cat', '2':'Rat', '3':'Bat'} key_to_check_for = '2' if Animals.get(key_to_check_for) is not None: print('Key exists in Animals') else: print(f'There is no key {key_to_check_for} in Animals')
Kimenet:
Key exists in Animals
Ha most negatív esetet veszünk,
Kód:
Animals = {'1': 'Cat', '2':'Rat', '3':'Bat'} key_to_check_for = '5' if Animals.get(key_to_check_for) is not None: print('Key exists in Animals') else: print(f'There is no key {key_to_check_for} in Animals')
Kimenet:
There is no key '5' in Animals
Ha ezt a módszert használja, ne feledje, hogy ha van egy kulcsunk ezzel a None értékkel, akkor az nem lesz pontos. Ha nincs ilyenünk, akkor ez a technika elég lesz. Ha az ezzel a metódussal visszaadott értékeket szeretnénk felhasználni, akkor azokat elmenthetjük egy változóba.
Keys() használata
A kulcsok() függvény és az 'in' operátor használható annak ellenőrzésére, hogy létezik-e kulcs a szótárban. A kulcsok() metódus a kulcsok listáját adja vissza a szótárban, és az „if, in” utasítás ellenőrzi, hogy a megadott kulcs szerepel-e a listában. Igazat ad vissza, ha a kulcs létezik; ellenkező esetben False-t ad vissza.
Bemenet
Animals = {'1': 'Cat', '2':'Rat', '3':'Bat'} key='2' if key in Animals.keys(): print('Key exists in Animals') else: print(f'There is no key {key} in Animals')
Kimenet:
Key exists in Animals
Ellenőrizze, hogy a szótárban van-e több kulcs.
Egy utasításban azt is ellenőrizhetjük, hogy a szótár több kulcsot tartalmaz-e. Használhatjuk a minden() funkciót a lista megértésével kombinálva, hogy megnézze, hogy a szótár sok vagy az összes kulcsot tartalmaz-e.
Kód:
Animals = {'1': 'Cat', '2':'Rat', '3':'Bat'} key='2' if all(key in Animals for key in ('1','5')): print('All keys exists in Animals') else: print('Not all the keys are there in Animals')
Kimenet:
Not all the keys are there in Animals
Vizsgálja meg a szótárak listáját, hogy megtudja, létezik-e a kulcs
A szótárlista olyan szótárak gyűjteménye, amelyek listában találhatók.
- list_of_dictionary - egy lista, amelyben három szótárobjektum található.
- 'b' a kulcsok kulcsaiban a szótárlistában - a kulcsok listájának létrehozása a szótárak listáján belül a lista megértésével. Ezután a listán nézze meg, hogy elérhető-e. Egy listát ad vissza, amelyben a „b” kulcsok True, a nem egy kulcsok esetén pedig False.
- any() – Ellenőrzi a listaértelmezés által biztosított Igaz/hamis listát. A „b” kulcs akkor szerepel a szótárlistában, ha legalább egy True-t tartalmaz. Az „if” blokk ezután végrehajtásra kerül, miután True értéket ad vissza. Ellenkező esetben az 'else' blokk végrehajtásra kerül.
Kód:
list_of_dictionaries = [{'a': 'A'}, {'b': 'B'}, {'c': 'C'}] if any('b' in keys for keys in list_of_dictionary): print('key exists in list_of_dictionaries') else: print('key does not exists in list_of_dictionaries')
Kimenet:
Key exists in list_of_dictionaries
Ellenőrizze, hogy a kulcs szerepel-e a JSON-szótárban
A JSON a „Javascript Object Notation” rövidítése, és ez egy kulcs-érték pár, amely értékeket ment.
A json.loads() metódus használható szótár összeállítására JSON-szövegből.
Ezután, ahogy az alábbiakban látható, használhatjuk az „if és in” funkciót, hogy megnézzük, hogy a kulcs megtalálható-e a JSON-szótárban.
Bemenet
import json json_str = '''{'a': 'A', 'b': 'B', 'c': 'C'}''' json_dictionary = json.loads(json_str) if 'c' in json_dictionary: print('Key is present in the JSON dictionary') else: print('Key is not present in JSON dictionary')
Kimenet:
Key is present in the JASON dictionary
Következtetés
Összefoglalva, megtanultuk, hogyan ellenőrizhetjük többféleképpen, hogy a kulcs benne van-e a szótárban. Azt is megtanultuk, hogyan alkalmazzuk ezeket a módszereket különböző példányokra, hogy megnézzük, a kulcs benne van-e a szótárban. Azt is láttuk, hogy az egyes opciók eltérő időt vesznek igénybe.