什么时候应该使用字典、列表或集合?
是否有更适合每种数据类型的场景?
最佳答案
list
保持顺序,dict
和 set
不:当你关心顺序时,你必须使用 list
(当然,如果您选择的容器仅限于这三个 ;-))。
dict
将每个键与一个值相关联,而 list
和 set
只包含值:显然,用例非常不同。
set
要求项目是可散列的,list
不要求:如果您有不可散列的项目,则不能使用 set
并且必须改为使用 list
。
set
禁止重复,list
不:也是一个关键的区别。 (可以在 collections.Counter
中找到“multiset”,它将重复项映射到多次出现的项目的不同计数 - 您可以将其构建为 dict
,如果由于某些奇怪的原因您无法导入 collections
,或者在 2.7 之前的 Python 中作为 collections.defaultdict(int)
,使用项目作为键和关联值作为计数)。
检查 set
(或 dict
,用于键)中的值的成员资格非常快(大约需要一个常数,很短的时间),而在列表中在平均和最坏情况下,它所花费的时间与列表的长度成正比。所以,如果你有可散列的项目,不关心顺序或重复,并且想要快速的成员资格检查,set
比 list
更好。
https://stackoverflow.com/questions/3489071/