Выбор ответа Senior Коллекции обновлено

Представления dict.keys()

Вопрос

Что выведет код?

d = {'a': 1}
ks = d.keys()
d['b'] = 2
print(ks)

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

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

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

Коротко

Правильный ответ: dictkeys(['a', 'b']). d.keys() возвращает не копию, а живое представление (view), которое отражает текущее состояние словаря.

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

  1. ['a'], keys() вернул копию
  2. ['a', 'b']
  3. RuntimeError: словарь изменён
  4. dict_keys(['a', 'b'])правильный ответ

Разбор

d.keys() возвращает не копию, а живое представление (view), которое отражает текущее состояние словаря. После добавления b оно покажет оба ключа, а печатается как dict_keys([...]). Ошибки нет, потому что нет итерации в момент изменения. Чтобы зафиксировать ключи, делают list(d).

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

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