Выбор ответа Junior Стандартная библиотека обновлено

defaultdict и setdefault

Вопрос

Чем defaultdict(list) удобнее d.setdefault(k, []).append(x)?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Не создаёт пустой список-кандидат на каждом обращении. setdefault(k, []) на каждом вызове создаёт новый пустой список, даже если ключ уже есть, и выглядит громоздко. defaultdict вызывает фабрику только для отсутствующего ключа.

Варианты ответа

  1. Не создаёт пустой список-кандидат на каждом обращенииправильный ответ
  2. Только defaultdict сохраняет порядок вставки ключей
  3. setdefault не работает со списками, только со строками
  4. defaultdict потокобезопасен, а обычный dict нет

Разбор

setdefault(k, []) на каждом вызове создаёт новый пустой список, даже если ключ уже есть, и выглядит громоздко. defaultdict вызывает фабрику только для отсутствующего ключа. Порядок вставки сохраняют оба, setdefault прекрасно работает со списками, а потокобезопасность у них одинаковая.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.