Короткий ответ
list хранит упорядоченные элементы, допускает дубликаты и даёт доступ по индексу. set — коллекция только уникальных элементов с быстрой проверкой вхождения. dict — пары «ключ — значение» с уникальными ключами и быстрым доступом по ключу; с версии Python 3.7 он сохраняет порядок вставки.
Как это работает подробнее
- Список. Упорядоченная индексируемая коллекция: порядок добавления сохраняется, дубликаты допустимы, доступ идёт по индексу.
- Множество. Неупорядоченная коллекция уникальных элементов, оптимизированная для проверки вхождения и математических операций: объединения, пересечения и разности.
- Словарь. Хранит пары «ключ — значение», ключи уникальны, значение по ключу находится очень быстро, а порядок вставки сохраняется начиная с версии 3.7.
Что использовать на практике
- Порядок и дубликаты. Для последовательности шагов алгоритма, истории транзакций или списка комментариев выбирай список.
- Уникальность. Для хранения уникальных идентификаторов, поиска общих элементов у пользователей или удаления дубликатов через
list(set(...))используй множество. - Связи по ключу. Для представления объекта вроде
{'id': 1, 'name': 'John'}, кэширования результатов и сопоставления данных из разных источников — словарь.
Подводные камни
- Путаница назначения. Множество не гарантирует порядок, поэтому оно не подходит там, где последовательность элементов важна.
- Перезапись ключей. Повторное присваивание ключу словаря перезаписывает прежнее значение, что иногда приводит к потере данных.