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