Развёрнутое пояснение:
1. defaultdict(int) создаёт словарь, в котором фабрика int возвращает 0 для отсутствующего ключа.
2. Выражение errors['api'] += 1 сначала получает значение 0, увеличивает его и сохраняет 1 для ключа 'api'.
3. Обращение errors['db'] не вызывает KeyError: defaultdict вызывает int без аргументов, получает 0 и добавляет пару 'db': 0.
4. Первый print выводит 0, а второй — обычное представление словаря с ключами в порядке их добавления: {'api': 1, 'db': 0}.
Почему это важно
Задача относится к поведению defaultdict при чтении отсутствующих ключей. В счётчиках метрик простая проверка значения может незаметно изменить словарь, создать лишние записи и повлиять на последующую сериализацию или обход данных.
Post #4897
161
Python: задачки и вопросы
- ✍ 1