使用python将字典(哈希)存储在文件中的有效方法?

Posted

技术标签:

【中文标题】使用python将字典(哈希)存储在文件中的有效方法?【英文标题】:Efficient way to store dictionary (hash) in file with python? 【发布时间】:2011-04-13 01:52:42 【问题描述】:

我正在实现一个需要在磁盘上存储哈希的 Unix 用户空间工具。每次运行程序都会读取哈希,非常频繁。哈希只需要存储“name:path”值。

我查看了 Python 的 bsddb 标准库模块,但我可以看到它在 Python 3 中将被弃用。我还看到了 pickle 标准库模块。

我不是python人,那么哈希序列化和频繁打开/读取/关闭操作的有效方法是什么?

【问题讨论】:

【参考方案1】:

我会从shelve 模块开始,看看是不是太慢了。它完全符合您的要求。

import shelve

d = shelve.open('filename')

d['name'] = 'path'

d.close()

或从中读取

d = shelve.open('filename')

d = hash['name']

它本质上是提供字典抽象的 pickle 包装器。

【讨论】:

+1 很酷,以前从未听说过该模块。 -0.1 用于遮蔽hash,不过。 :o) ...好的,现在已删除。 @jellybean,我觉得有些不对劲。将其更改为 d 以反映它本质上是一个 dict 的事实。很好看。【参考方案2】:

我建议您使用 pickle / shelve 进行数据序列化。

http://www.saltycrane.com/blog/2008/01/saving-python-dict-to-file-using-pickle/ http://docs.python.org/library/shelve.html

【讨论】:

【参考方案3】:

我会使用pickle,看看它是否足够快满足您的需求。

【讨论】:

以上是关于使用python将字典(哈希)存储在文件中的有效方法?的主要内容,如果未能解决你的问题,请参考以下文章

使用python实现哈希表字典集合

Python中的字典

为什么Python字典中的键必须是可哈希的

为什么Python字典中的键必须是可哈希的

为什么Python字典中的键必须是可哈希的

为什么Python字典中的键必须是可哈希的