dict[key]
key
- ключ словаряkey
Операция dict[key]
вернет элемент словаря dict
с ключом key
. Операция вызывает исключение KeyError
, если ключ key
отсутствует в словаре.
Если подкласс dict
определяет метод __missing__()
и ключ отсутствует, операция d[key]
вызывает этот метод с ключом key
в качестве аргумента. Затем операция d[key]
возвращает или вызывает все, что было возвращено или вызвано вызовом __missing__(key)
. Никакие другие операции или методы не вызывают __missing__()
. Если __missing__()
не определен, то возникает KeyError
.
__missing__()
должен быть методом, он не может быть переменной экземпляра.
>>> class Counter(dict): ... def __missing__(self, key): ... return 0 >>> c = Counter() >>> c['red'] 0 >>> c['red'] += 1 >>> c['red'] 1
В приведенном выше примере показана часть реализации collections.Counter
.
>>> x = {'one': 1, 'two': 2, 'three': 3, 'four': 4} >>> x['two'] # 2 >>> x['four'] # 4 >>> x['ten'] # Traceback (most recent call last): # File "<stdin>", line 1, in <module> # KeyError: 'ten'