Контекст
Аналитика собирает поток событий с фронтенда, и из-за повторных отправок один и тот же event_id иногда приходит несколько раз. Перед записью в отчёт поток чистят от повторов, но порядок терять нельзя: по нему видно, в какой последовательности пользователь нажимал кнопки.
Задача
Реализуйте функцию dedupe(ids). На вход приходит список идентификаторов событий (строк). Верните новый список, где каждый идентификатор встречается один раз — в том порядке, в котором он впервые появился во входе.
Правила
- Сохраняйте первое вхождение каждого значения; все последующие повторы того же значения выбрасывайте.
- Порядок результата — это порядок первых появлений во входном списке, не сортировка.
- Для пустого списка верните пустой список.
- Сравнение строгое:
"a"и"A"— разные значения, ничего не приводите к нижнему регистру. - Входной список не меняйте — возвращайте новый список.
Примеры
dedupe(["a", "b", "a", "c", "b"]) # ["a", "b", "c"]
dedupe(["x", "x", "x"]) # ["x"]
dedupe([]) # []
Где это в системе
dedupe стоит на входе пайплайна аналитики: поток событий (список событий в порядке прихода с фронтенда) чистится от дублей перед подсчётом метрик, а исходный порядок остаётся для воронки переходов.