python solution.py

Дедупликация событий на Python

Удалите повторные идентификаторы, сохранив исходный порядок первых появлений.

  • ЯзыкPython
  • УровеньНачальный
  • НавыкСписки, множества и сохранение порядка

Контекст

Аналитика собирает поток событий с фронтенда, и из-за повторных отправок один и тот же event_id иногда приходит несколько раз. Перед записью в отчёт поток чистят от повторов, но порядок терять нельзя: по нему видно, в какой последовательности пользователь нажимал кнопки.

Задача

Реализуйте функцию dedupe(ids). На вход приходит список идентификаторов событий (строк). Верните новый список, где каждый идентификатор встречается один раз — в том порядке, в котором он впервые появился во входе.

Правила

  1. Сохраняйте первое вхождение каждого значения; все последующие повторы того же значения выбрасывайте.
  2. Порядок результата — это порядок первых появлений во входном списке, не сортировка.
  3. Для пустого списка верните пустой список.
  4. Сравнение строгое: "a" и "A" — разные значения, ничего не приводите к нижнему регистру.
  5. Входной список не меняйте — возвращайте новый список.

Примеры

dedupe(["a", "b", "a", "c", "b"])  # ["a", "b", "c"]
dedupe(["x", "x", "x"])            # ["x"]
dedupe([])                         # []

Где это в системе

dedupe стоит на входе пайплайна аналитики: поток событий (список событий в порядке прихода с фронтенда) чистится от дублей перед подсчётом метрик, а исходный порядок остаётся для воронки переходов.

Двигайтесь по одному шагу

Подсказка 1

Разделите структуру для проверки «уже встречалось» и список результата.

Подсказка 2

Обходите исходный список слева направо и добавляйте только первое появление.

Подсказка 3

Верните новый список, не изменяя входной.

Как убрать повторы и не потерять порядок

Храните уже встреченные значения отдельно, а в результат добавляйте только первое появление.

Не оставляйте задачу изолированной