将字典保存到文件(numpy和Python 2/3友好)

2024-04-29 22:52:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在Python中进行分层键值存储,这基本上可以归结为将字典存储到文件。我指的是任何类型的字典结构,可能包含其他字典、numpy数组、可序列化的Python对象等等。不仅如此,我还希望它存储经过空间优化的numpy数组,并在Python 2和3之间很好地发挥作用。

下面是我知道的方法。我的问题是,这份清单上遗漏了什么,有没有一个替代方案可以躲过我所有的交易破坏者?

  • Python的pickle模块(deal breaker:大量膨胀numpy数组的大小)
  • Numpy的save/savez/load(deal breaker:Python 2/3中不兼容的格式)
  • PyTables replacement for numpy.savez(交易破坏者:只处理numpy数组)
  • 手动使用PyTables(deal breaker:我希望这可以不断更改研究代码,因此通过调用单个函数将字典转储到文件中非常方便)

PyTables替换numpy.savez是很有前途的,因为我喜欢使用hdf5的想法,而且它可以有效地压缩numpy数组,这是一个很大的优势。但是,它不采用任何类型的字典结构。

最近,我一直在做的是使用类似于PyTables替换的东西,但是增强它以能够存储任何类型的条目。这实际上工作得很好,但我发现自己将原始数据类型存储在length-1carrays中,这有点尴尬(与实际的length-1数组不明确),即使我将chunksize设置为1,这样就不会占用太多空间。

外面已经有这样的东西了吗?

谢谢!


Tags: 文件numpy类型字典分层空间交易数组