Ein KeyError wird generiert, wenn versucht wird, auf einen Schlüssel zuzugreifen, der nicht im Wörterbuch vorhanden ist.
Die Gegenmaßnahmen dagegen werden nachfolgend beschrieben.
>>> pythons = {'Chapman': 'Graham', 'Cleese': 'John',
... Jones': 'Terry', 'Palin': 'Michael'}
>>> 'Marx' in pythons
False
>>> pythons.get('Cleese')
'John'
Wenn der Schlüssel nicht vorhanden ist, wird der angegebene Optionswert zurückgegeben.
>>> pythons.get('Marx', 'Not a Python')
'Not a Python'
Wenn der Schlüssel nicht vorhanden ist, wird None zurückgegeben, wenn keine Option angegeben ist.
>>> ret = pythons.get('Marx')
>>> ret is None
True
Befindet sich der Schlüssel nicht im Wörterbuch, wird er mit dem im zweiten Argument angegebenen Wert zum Wörterbuch hinzugefügt.
>>> periodic_table = {'Hydrogen', 1, 'Helium': 2}
>>> print(periodic_table)
{'Helium': 2, 'Hydrogen': 1}
>>>
carbon = periodic_table.setdefault ('Carbon', 12) # Hinzugefügt, da das Wörterbuch kein 'Carbon' enthält 12
periodic_table {'Helium': 2, 'Carbon': 12, 'Hydrogen': 1}
Befindet sich der Schlüssel bereits im Wörterbuch, wird der ursprüngliche Wert zurückgegeben und das Wörterbuch überhaupt nicht geändert.
>>> helium = periodic_table.setdefault('Helium', 947)
>>> helium
>>> periodic_table
{'Helium': 2, 'Carbon': 12, 'Hydrogen': 1}
defaultdict ()
legt den Standardwert beim Erstellen eines Wörterbuchs im Voraus fest.
Geben Sie eine Funktion im Argument von defaultdict ()
an.
from collections import defaultdict
periodic_table = defaultdict(int)
Wenn Sie dann auf einen nicht vorhandenen Schlüssel zugreifen, wird der Wert von "int ()" (= 0) festgelegt.
>>> periodic_table['Hydrogen'] = 1
>>> periodic_table['Lead']
0
>>> periodic_table
defaultdict(<class 'int'>, {'Lead': 0, 'Hydrogen': 1})
Die an defaultdict ()
übergebene Funktion kann Ihre eigene Definition sein.
In diesem Fall wird der Wert von "no_idea ()" gesetzt.
>>> 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?'
Sie können Lambda verwenden, um eine Standarderstellungsfunktion im Aufruf defaultdict ()
zu definieren.
>>> bestiary = defaultdict(lambda: 'Huh?')
>>> bestiary = ['E']
'Huh?'
Dieser Code wurde aus den folgenden Dokumenten entlehnt (teilweise geändert).
Sie haben in den Kommentaren darauf hingewiesen. Sie können auch die Ausnahme abfangen.
try:
result = cache[x]
except KeyError:
result = 'blah blah blah...'
cache[x] = result
Recommended Posts