Python字典碰见我需要一个大(=巨大)Python字典,这竟然是相当存储器消耗的情况。然而,由于所有的值都是单一类型(长) - 以及键,我想我可以使用python(或numpy,并不重要)数组的值;并用一个实际使用这些数组作为键和值存储的对象包装所需的接口(in:x; out:d [x])。具有恒定值型
我可以使用一个索引转换对象(输入 - >索引,1..n的,其中n是不同值的计数器),并返回数组[索引]。我可以详细说明如何实现这种具有合理内存要求的索引方法的一些技巧,它的工作原理甚至相当不错。 但是,我想知道是否有这样一个数据结构对象已经存在(在Python中,或从C/++包装到Python中),在任何包中(我检查了集合和一些Google搜索)。
任何评论将受到欢迎,感谢。
您应该考虑使用元组而不是列表,如果你还没有这样做的话; Python没有简单的“数组”,但元组肯定更具有内存效率,因为它不会保留插入空间。然而,由于哈希表的存在,字典仍然会咀嚼内存,因此您可能需要考虑使用已排序的数据结构并使用二分查找来查找所需的键,这些键映射到Tuple的索引。 – 2010-05-31 08:58:51
你为什么想着简单的Python实现?可能值得寻找已经实施索引的任何现成的键值存储解决方案,例如东京内阁? – Vestel 2010-05-31 09:30:10