A list
сохраняет порядок, dict
и set
- нет: поэтому, когда вы заботитесь о заказе, вы должны использовать list
(если ваш выбор контейнеров ограничен этими тремя, конечно;-).
dict
ассоциирует с каждым ключом значение, в то время как list
и set
просто содержат значения: очевидно, очень разные варианты использования.
set
требует, чтобы элементыбыть хэшируемым, list
нет: если у вас есть не хэшируемые элементы, поэтому вы не можете использовать set
и вместо этого должны использовать list
.
set
запрещает дублирование, list
делаетнет: также решающее различие.(«Мультимножество», которое отображает дубликаты в другое число для элементов, присутствующих более одного раза, можно найти в collections.Counter
- вы можете создать его как dict
, если по какой-то странной причине не можете импортировать collections
, или, в pre-2.7 Python как collections.defaultdict(int)
, с использованием элементов в качестве ключей и связанного значения в качестве счетчика).
Проверка на членство значения в set
(или dict
, для ключей) невероятно быстро (занимает около постоянного, короткого времени), в то время как в списке это занимает время, пропорциональное длине списка в среднем и худшем случаях.Таким образом, если у вас есть хэшированные элементы, вам не нужны ни порядок, ни дубликаты, и вы хотите быструю проверку членства, set
лучше, чем list
.