我有40.000个文件,每个文件93.08个单词。在平均上,每个单词都是一个数字(可以索引字典),每个单词都有一个计数(频率)。阅读更多here。
我在两个数据结构之间存储数据,并想知道我应该选择哪一个,Python人会选择哪一个!
三重列表:
列表,每个节点:
__是一个列表,其中每个节点都是:
__....是两个值的列表; word_id
和count
。
双词典:
字典,其中包含doc_id
和值字典的键。
该值字典将word_id
作为键,count
作为值。
我觉得第一个需要更少的空间(因为它不会存储doc_id
),而第二个将更容易处理和访问。我的意思是,访问列表中的i元素是O(n),而它在字典中是常量,我认为。我应该选择哪一个?
答案 0 :(得分:3)
你应该使用字典。它将使处理代码更容易理解和编程,并且它的复杂性也会降低。
您使用列表的唯一原因是,如果您关心文档的顺序。
答案 1 :(得分:2)
如果您不关心项目的顺序,您一定要使用字典,因为字典用于对关联数据进行分组,而列表通常用于对更多通用项目进行分组。
此外,字典中的查找速度比列表中的快。
列表中的查找是O(n),而字典中的查找是O(1)。虽然列表在内存中比列表大得多
答案 2 :(得分:1)
基本上你只想存储大量的数字,其中最节省空间的选择是array。这些是一维的,所以你可以编写一个接受三个索引的类(最后一个是word_id
为0而count
为1)并进行一些基本的加法和乘法来找到正确的一维索引。