list
保持秩序,dict
和set
不保持秩序:因此,当你关心秩序时,你必须使用list
(当然,如果你 Select 的容器仅限于这三个;-).
dict
将每个键与一个值相关联,而list
和set
只包含值:显然,这是非常不同的用例.
set
要求项是Hasable,而list
不是:如果您有不可Hasable的项,则不能使用set
,而必须使用list
.
set
禁止重复,list
禁止:这也是一个关键的区别.(在collections.Counter
中可以找到一个"multiset",它将重复项映射到多次出现的项的不同计数中——如果出于某种奇怪的原因无法导入collections
,您可以将一个构建为dict
,或者在2.7之前的Python中,将项作为键,并将相关值作为计数).
判断set
(或dict
,对于键)中的值的成员身份非常快(大约需要一个恒定的短时间),而在列表中,在平均和最坏情况下,它所需的时间与列表的长度成正比.所以,如果你有可放的物品,不管是订单还是重复,想要快速的会员判断,set
比list
要好.