在我的一个程序中,我使用稀疏数据数组,目前实现为整数索引的数据,如下所示:
{
0: {some dict with data},
1: {some similar but yet different dict},
10: {...},
100: {...},
200: {...},
etc
}
事实证明,这个词汇为我的目的占用了太多的记忆。有没有办法更有效地存储稀疏数组?为了减少内存消耗,我准备牺牲访问时间毫秒。关键范围是0..0xFFFFFF,稀疏度约为30%。
虽然第三方模块可能是一个选项,但我对纯python解决方案更感兴趣。
感谢。
澄清一下,内部词汇不受优化,我只是试图以更好的方式安排它们。为简单起见,让我们假设我有字符串而不是那里的字母:
data = {
0: "foo",
1: "bar",
10: "...",
100: "...",
200: "...",
etc
}
答案 0 :(得分:3)
如果结构是映射,那么类似于dict的对象确实是正确的选择,如果内存是个问题,那么显而易见的解决方案就是解决文件问题。最简单的方法可能是使用pandas系列,它可以用作dict,可以直接通过HDF5文件工作(参见http://pandas.pydata.org/pandas-docs/stable/io.html#hdf5-pytables)
或者,对于纯python解决方案,您可以使用shelve模块。