Выбор ответа Middle Коллекции обновлено
Ловушка dict.fromkeys со списком
Вопрос
Что выведет print(d)?
d = dict.fromkeys(['a', 'b'], [])
d['a'].append(1)
print(d)
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: {'a': [1], 'b': [1]}. dict.fromkeys(keys, value) кладёт один и тот же объект во все ключи.
Варианты ответа
{'a': [1], 'b': [1]}правильный ответ{'a': [1], 'b': []}TypeError: unhashable type: 'list'{'a': 1, 'b': []}
Разбор
dict.fromkeys(keys, value) кладёт один и тот же объект во все ключи. Список общий, поэтому append через ключ a виден и через b. Нужны независимые списки: {k: [] for k in keys} или defaultdict(list).
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.