Дан код:
``python
d = {'a': 1, 'b': 2}
k = d.keys()
d['c'] = 3
`
Что будет в k` после выполнения?
AВернёт
dict_keys(['a', 'b']), потому что keys — это снимок на момент вызоваBВернёт пустой
dict_keys([]), потому что словарь был изменён после вызоваCВыбросит
RuntimeError, потому что словарь изменился после вызова .keys()DВернёт
dict_keys(['a', 'b', 'c']), потому что keys — это динамическое представлениеПравильный ответ.
.keys() возвращает динамическое представление (view), которое отражает текущее состояние словаря.Разбор
Объект dict_keys, возвращаемый .keys(), не копирует ключи, а ссылается на сам словарь. Поэтому после добавления нового ключа 'c' представление k тоже покажет три ключа. То же самое касается .values() и .items(). Если нужен фиксированный снимок ключей, используйте list(d.keys()).
Проверь себя · 1/3разбор после ответа
Нужно сгруппировать пользователей по городу: для каждого города хранить список
user_id. Используется defaultdict из модуля collections. Какой аргумент передать при создании?Ещё вопросы по теме «Коллекции и структуры данных»
- Есть список событий `events = ["click"]`. Список `events` используется в нескольких местах по ссылке, поэтому важно изменить именно тот же объект (не создавать новый). Нужно добавить элементы из `new_events = ["view", "purchase"]`, чтобы итог был плоским. Какой вариант корректен?
- Есть словарь `d = {"country": "RU"}`. Нужно получить значение по ключу `"city"`, но если ключа нет — вернуть строку `"unknown"` без исключения. Что правильно?
- В логах есть список `user_ids` с повторениями. Как получить количество уникальных пользователей?
- Что произойдёт при выполнении кода `t = (1, 2); t[0] = 9`?
- Дан список `nums = [10, 20, 30, 40]`. Чему равен результат выражения `nums[1:3]`?
- Все вопросы по «Коллекции и структуры данных» →