列表还是字典?

2024-04-23 20:21:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一些要存储在某个容器中的值集,稍后仅按位置检索,例如:

index:0
value:(30,6700,3,21543)
index:34
value:(2,1)
index:36
value:(1,2,3,4,5,6,1001,9999)
index:69
value:(11)

其他地方都是空的。其中大约只有1/4有值。你知道吗

稍后,我将需要通过执行myList[34]=(2,1,9999,999999,9999999)之类的操作来访问和修改(追加)这些值。你知道吗

然后我需要这样做:9999 in myList[34]?是120 in myList[34]?你知道吗

我不知道是应该创建一个字典将它们存储为键值对,还是使用一个列表。列表似乎是最直观的方式,但是列表中的大多数插槽实际上都是空的。你知道吗

单子和单子哪个更快?或者是否有其他具有更好时间性能的数据容器?你知道吗

时间是我最关心的。我昨天写了一小段代码,它已经运行了20多个小时了。我很沮丧:-(


Tags: in列表index字典value地方方式时间
3条回答

速度:列表*

最佳编码实践:字典

*如果您有足够的内存来存储列表,并且数据集不会大量增长/收缩,那么使用列表将是最快的。你知道吗

如果数据集大量增长/收缩,或者无法在内存中容纳所有数据集,则必须使用字典。你知道吗


请注意,我上面的列表建议只是为了提高速度—这不是好的编码实践。你知道吗

对于您正在描述的情况,您肯定希望dictlist之上;这样您就只为存在的项使用空间。你知道吗

对于dict的内容,您希望使用set(..)而不是元组;这将使您的in检查常量时间而不是长度相关的。你知道吗

通过索引访问列表和dict中的元素是O(1)-有关详细信息,请参见Python wiki entry on time complexity。你知道吗

鉴于此,这里最重要的问题是空间,既然你说你的收藏是稀疏的,dict将是首选。你知道吗

相关问题 更多 >