三重列表VS双字典

时间:2016-05-01 15:37:57

标签: python list dictionary document bigdata

我有40.000个文件,每个文件93.08个单词。在平均上,每个单词都是一个数字(可以索引字典),每个单词都有一个计数(频率)。阅读更多here

我在两个数据结构之间存储数据,并想知道我应该选择哪一个,Python人会选择哪一个!

三重列表:

列表,每个节点:

__是一个列表,其中每个节点都是:

__....是两个值的列表; word_idcount

双词典:

字典,其中包含doc_id和值字典的键。

该值字典将word_id作为键,count作为值。

我觉得第一个需要更少的空间(因为它不会存储doc_id),而第二个将更容易处理和访问。我的意思是,访问列表中的i元素是O(n),而它在字典中是常量,我认为。我应该选择哪一个?

3 个答案:

答案 0 :(得分:3)

你应该使用字典。它将使处理代码更容易理解和编程,并且它的复杂性也会降低。

您使用列表的唯一原因是,如果您关心文档的顺序。

答案 1 :(得分:2)

如果您不关心项目的顺序,您一定要使用字典,因为字典用于对关联数据进行分组,而列表通常用于对更多通用项目进行分组。

此外,字典中的查找速度比列表中的快。

列表中的查找是O(n),而字典中的查找是O(1)。虽然列表在内存中比列表大得多

答案 2 :(得分:1)

基本上你只想存储大量的数字,其中最节省空间的选择是array。这些是一维的,所以你可以编写一个接受三个索引的类(最后一个是word_id为0而count为1)并进行一些基本的加法和乘法来找到正确的一维索引。