【发布时间】:2011-02-25 21:48:40
【问题描述】:
我遇到了一个需要大(=巨大)python 字典的情况,这变得非常消耗内存。 但是,由于所有值都是单一类型(长) - 以及键,我想我可以使用 python(或 numpy,并不重要)数组作为值;并用一个对象包装所需的接口(in: x ; out: d[x]),该对象实际上使用这些数组来存储键和值。
我可以使用索引转换对象(输入 --> 索引,为 1..n,其中 n 是不同值计数器),并返回数组 [索引]。我可以详细说明如何以合理的内存要求实现这种索引方法的一些技术,它可以工作,甚至非常好。 但是,我想知道在任何包(我检查了集合和一些 Google 搜索)中是否已经存在这样的数据结构对象(在 python 中,或从 C/++ 包装到 python)。
欢迎评论,谢谢。
【问题讨论】:
-
如果你还没有这样做,你应该考虑使用元组而不是列表; Python 没有普通的“数组”,但元组肯定更节省内存,因为它不为插入保留空间。然而,由于哈希表,字典仍然会占用内存,因此您可能需要考虑使用排序数据结构并使用二进制搜索来查找所需的键,该键映射到元组的索引。
-
你为什么要考虑纯 Python 实现?是否值得寻找任何已实施索引的开箱即用键值存储解决方案,例如东京内阁?
标签: python arrays data-structures dictionary