Type de dictionnaire Contre-mesures d'erreur clé

Une KeyError est générée lors de la tentative d'accès à une clé qui n'existe pas dans le dictionnaire.

Les contre-mesures contre cela sont décrites ci-dessous.

Vérifiez que la clé existe à l'avance

>>> pythons = {'Chapman': 'Graham', 'Cleese': 'John',
... Jones': 'Terry', 'Palin': 'Michael'}
>>> 'Marx' in pythons
False

Utilisez la fonction get ()

>>> pythons.get('Cleese')
'John'

Si la clé n'existe pas, la valeur d'option spécifiée est renvoyée.

>>> pythons.get('Marx', 'Not a Python')
'Not a Python'

Si la clé n'existe pas, None est renvoyé si aucune option n'est spécifiée.

>>> ret = pythons.get('Marx')
>>> ret is None
True

Utilisez setdefault ()

Si la clé n'est pas dans le dictionnaire, elle sera ajoutée au dictionnaire avec la valeur spécifiée dans le deuxième argument.

>>> periodic_table = {'Hydrogen', 1, 'Helium': 2}
>>> print(periodic_table)
{'Helium': 2, 'Hydrogen': 1}
>>>

carbon = table_périodique.setdefault ('Carbon', 12) # Ajouté car il n'y a pas de 'Carbone' dans le dictionnaire 12

periodic_table {'Helium': 2, 'Carbon': 12, 'Hydrogen': 1}

Si la clé est déjà dans le dictionnaire, la valeur d'origine est renvoyée et le dictionnaire n'est pas du tout modifié.

>>> helium = periodic_table.setdefault('Helium', 947)
>>> helium
>>> periodic_table
{'Helium': 2, 'Carbon': 12, 'Hydrogen': 1}

Utilisez defaultdict ()

defaultdict () définit la valeur par défaut à l'avance lors de la création d'un dictionnaire. Spécifiez une fonction dans l'argument de defaultdict ().

from collections import defaultdict
periodic_table = defaultdict(int)

Ensuite, si vous accédez à une clé qui n'existe pas, la valeur de ʻint () `(= 0) sera définie.

>>> periodic_table['Hydrogen'] = 1
>>> periodic_table['Lead']
0
>>> periodic_table
defaultdict(<class 'int'>, {'Lead': 0, 'Hydrogen': 1})

La fonction passée à defaultdict () peut être votre propre définition. Dans ce cas, la valeur de no_idea () sera définie.

>>> from collections import defaultdict
>>>
>>> def no_idea():
... return 'Huh?'
...
>>> bestiary = defaultdict(no_idea)
>>> bestiary['A'] = 'Abominable Snowman'
>>> bestiary['B'] = 'Basilisk'
>>> bestiary['A']
'Adominable Snowman'
>>> bestiary['B']
'Basilisk'
>>> bestiary['C']
'Huh?'

Vous pouvez utiliser lambda pour définir une fonction de création par défaut dans l'appel defaultdict ().

>>> bestiary = defaultdict(lambda: 'Huh?')
>>> bestiary = ['E']
'Huh?'

Ce code a été emprunté aux documents suivants (partiellement modifiés).

Postscript

Vous l'avez souligné dans les commentaires. Vous pouvez également attraper l'exception.

try:
	result = cache[x]
except KeyError:
	result = 'blah blah blah...'
	cache[x] = result

Recommended Posts

Type de dictionnaire Contre-mesures d'erreur clé
Dictionnaire type 2
Type de dictionnaire 1
Erreur de clé de dictionnaire → Résoudre avec la clé dans le dictionnaire
[Contre-mesures d'erreur] Gestion des erreurs d'installation de django-heroku
Python pour les super débutants Super débutants Python # dictionnaire type 1
Donner des options de type de dictionnaire avec python-argparse
Python pour les super débutants Super débutants Python # dictionnaire type 2