При обработке событий нужно хранить идентификаторы пользователей, которых уже видели, чтобы быстро проверять user_id in seen и не хранить дубликаты. Что лучше использовать для seen?
A
list: упорядоченная коллекция с дубликатами и линейной по размеру проверкой inB
tuple: неизменяемый кортеж для фиксированных пар без поддержки добавления элементовC
dict: коллекция пар ключ → значение с возможностью хранить рядом с ключом данныеD
set: коллекция уникальных элементов с константной в среднем проверкой in через хешПравильный ответ.
set хранит уникальные элементы и обеспечивает быструю проверку x in s за счёт хеш-таблицы под капотом.Разбор
list и tuple допускают дубликаты и обычно используются, когда важен порядок элементов; проверка in у них линейная по размеру коллекции. dict нужен, когда рядом с ключом хранится значение. Для задачи «видели ли уже этот идентификатор» и дедупликации чаще всего выбирают set — он автоматически отбрасывает повторы и даёт почти константный поиск.
Проверь себя · 1/3разбор после ответа
Есть словарь настроек
config = {"timeout": 5, "retries": 2} и словарь переопределений override = {"timeout": 10}. Как обновить config, чтобы применить переопределения и сохранить остальные ключи?Ещё вопросы по теме «Коллекции и структуры данных»
- Есть список событий `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]`?
- Все вопросы по «Коллекции и структуры данных» →