Как убрать из списка дубликат элемента?
1. Через множество (set
)
set
)Преобразуем список в
set
, а потом обратно вlist
.Минус: теряется порядок элементов.
lst = [1, 2, 2, 3, 4, 3]
unique_lst = list(set(lst))
print(unique_lst) # Порядок может быть [1, 2, 3, 4] или другой
2. Через dict.fromkeys()
dict.fromkeys()
Сохраняет порядок элементов (Python 3.7+).
lst = [1, 2, 2, 3, 4, 3]
unique_lst = list(dict.fromkeys(lst))
print(unique_lst) # [1, 2, 3, 4]
3. Через генератор с проверкой
Можно вручную проверять, что элемент ещё не встречался.
Сохраняется порядок.
lst = [1, 2, 2, 3, 4, 3]
unique_lst = []
for item in lst:
if item not in unique_lst:
unique_lst.append(item)
print(unique_lst) # [1, 2, 3, 4]
4. Через collections.OrderedDict
(для старых версий Python)
collections.OrderedDict
(для старых версий Python)from collections import OrderedDict
lst = [1, 2, 2, 3, 4, 3]
unique_lst = list(OrderedDict.fromkeys(lst))
print(unique_lst) # [1, 2, 3, 4]
5. Вывод
Способ
Сохраняет порядок
Быстрота
Простой
set
❌
Быстро
Да
dict.fromkeys
✅
Быстро
Да
генератор
✅
Медленнее
Да
OrderedDict
✅
Быстро
Да, но устаревший
💡 В автотестах часто используют dict.fromkeys()
или set, чтобы убрать дубликаты из списка элементов UI, API ответов или тестовых данных.
Last updated
Was this helpful?