Дан код:\n``python\nd = {'a': 1, 'b': 2}\nk = d.keys()\nd['c'] = 3\n`\nЧто будет в k` после выполнения?

AВ k будет dict_keys(['a', 'b', 'c']): динамическое представление словаря
BВ k будет dict_keys(['a', 'b']): снимок ключей на момент вызова .keys()
CВ k будет пустой dict_keys([]): словарь был изменён сразу после вызова .keys()
DБудет выброшено исключение RuntimeError: словарь изменился после получения dict_keys
Правильный ответ. .keys() возвращает динамическое представление, которое отражает текущее состояние словаря.

Разбор

Объект dict_keys, возвращаемый .keys(), не копирует ключи, а ссылается на сам словарь. Поэтому после добавления нового ключа 'c' представление k тоже покажет три ключа. То же самое касается .values() и .items(). Если нужен фиксированный снимок ключей, используйте list(d.keys()).

Можно заниматься бесплатно

Готовим вопросы…

Три вопроса по теме этой страницы, с объяснениями.

Продолжить в браузере

Ещё вопросы по теме «Коллекции и структуры данных»