logo

Hogyan ellenőrizhető, hogy van-e kulcs a Python szótárban

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

    kulcsnév-Az érték kulcsneve, amelyet vissza szeretne adni.érték-Ha a kulcs nem létezik, ez az érték opcióként kerül megadásra.

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.