TGViewer
Python Backend | YeaHub Python Backend | YeaHub @yeahub_python_backend · 1.76K subscribers
Post #538 743
Удаляем дубликаты в списке, сохраняя порядок 👩‍💻

Когда мы обрабатываем входящие потоки данных — будь то список email-адресов, ID или URL-ссылок, перед нами встает задача: нужно избавиться от повторяющихся записей, но при этом сохранить исходный порядок

Стандартный подход, используя set(), безусловно, удалит все дубликаты, но у него есть побочный эффект: он полностью перемешивает элементы. А если порядок важен, то этот способ нам не подходит

К счастью, Python предлагает эффективное решение, используя особенности работы со словарями (dict)

📌 С версии Python 3.7 (а фактически и с 3.6 в CPython) словари гарантированно сохраняют порядок вставки ключей

Используя метод dict.fromkeys(последовательность), мы создаем словарь, где каждый элемент исходной последовательности становится ключом. При этом дубликаты игнорируются, и в словаре остаются только уникальные ключи, расположенные строго в том порядке, в котором они встретились впервые


Смотри, как это выглядит:


# Исходный список с повторяющимися данными
items = ["a", "b", "a", "c", "b"]

# Используем dict.fromkeys() и сразу преобразуем обратно в список
unique_ordered = list(dict.fromkeys(items))

# Результат: ['a', 'b', 'c'] — уникальные элементы с сохраненным порядком



▫️ Для удобства можно обернуть в функцию:

def get_unique_items_with_order(items):
"""Возвращает список уникальных элементов, сохраняя порядок их первого появления"""
return list(dict.fromkeys(items))


Дальше просто применяем

emails = ["a@mail.com", "b@mail.com", "a@mail.com"]
print(get_unique_items_with_order(emails))
# Вывод: ['a@mail.com', 'b@mail.com']


Получается довольно неплохо, без сложных циклов или лишних сортировок


🚀 Пост Guru Python: @sergey_filichkin_blog
  • ❤ 6
More from @yeahub_python_backend
  1. Oct 8, 2026#Собес #sql #order 🤔 Какой порядок выполнения SQL-запроса? 💬 Кратко: SQL выполняется не…
  2. Oct 7, 2026#Собес #memory 🤔 Middle+ Python Backend-разработчик в DELOTECH Техническое собеседование.…
  3. Oct 5, 2026#Собес #inheritance #composition #mixin 🤔 Какие есть способы переиспользования методов од…
  4. Oct 2, 2026#repository #собес 📚 Interactive Coding Challenges от Donne Martin Более 120 интерактивны…
  5. Oct 1, 2026#Собес #fork #git #repository 🤔 Что такое fork? 💬 Кратко: Fork — это копия чужого репози…
  6. Sep 30, 2026#Собес #python #versions #compatibility 🤔 Middle Python Backend разработчик в компанию Ba…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →