【发布时间】:2015-09-18 02:52:44
【问题描述】:
我在我的一个项目中遇到了一种情况,我可以使用列表或字典,但我很难选择使用哪一个。
我正在分析大量项目 (>400k)。而且我将拥有(> 400k)我会经常使用的列表或字典。 (获取/设置/更新)
在我的特定情况下,如果我根本不考虑性能,使用字典感觉比列表更方便。但是,我知道我可以使用列表来编写相同的内容。
我应该追求可读性并使用字典还是使用字典可能会增加太多开销,从内存和时间的角度来看,这会大大降低我的性能。
我知道这个问题有点太宽泛了。但我想在做完这个决定后开始构建我的所有逻辑之前先问一下。
简述我的情况:
我有键值0,1,...,n。目前,键将始终是从 0 到 n 的整数,我可以将其保存在一个列表中。
但是,我可以想到将来可能出现的一些情况,我需要为非整数键保留一些项目。或不连续的整数。
所以,问题是如果首先使用字典而不是列表不会增加太多的内存/时间成本,那么我将首先使用字典。但是,我不确定拥有 >400k 的字典与拥有 >400k 的列表在性能方面是否有很大差异。
【问题讨论】:
-
您能描述一下您要做什么吗?通常,您会根据要如何使用对象在列表和字典之间进行选择。
-
如果您需要订购并且主要是要遍历项目的列表。如果您需要随机访问并且主要是要获取/更新项目,请使用字典。
-
您也可以使用 OrderedDict,它具有与字典相同的性能,因此“排序”元素在 Python 2.7 或 3.x 中并不完全正确。简而言之,如果您需要键/值对,则使用 dict 更为重要,而如果值是实际条目,则列表非常好。
-
没关系。如果 dict 使它更具可读性,你应该这样做 - 特别是因为你知道你将需要其他键。在具有合理 RAM 量的计算机上,400k dict 不是问题。如果您做出了错误的选择,那么切换数据结构通常并不需要太多工作。
-
这完全取决于您如何处理这些数据。只有你自己知道。
标签: python python-2.7