更具体的欺骗 875228—Simple data storing in Python .
我有一个相当大的字典(6 GB),我需要对其进行一些处理。我正在尝试几种文档聚类方法,因此我需要一次将整个内容保存在内存中。我有其他函数可以在这些数据上运行,但内容不会改变。
目前,每当我想到新函数时,我都必须编写它们,然后重新生成 dict。我正在寻找一种将这个字典写入文件的方法,这样我就可以将它加载到内存中,而不是重新计算它的所有值。
为了过度简化它看起来像这样的东西: {((('word','list'),(1,2),(1,3)),(...)):0.0, ....}
我觉得 python 一定有比我更好的方法循环遍历一些字符串来寻找 : 和 ( 试图将它解析成字典。
最佳答案
为什么不使用 python pickle ? Python 有一个很棒的序列化模块,称为 pickle,它非常易于使用。
import cPickle
cPickle.dump(obj, open('save.p', 'wb'))
obj = cPickle.load(open('save.p', 'rb'))
pickle 有两个缺点:
- 它不能防止错误或 恶意构造的数据。绝不 unpickle 从接收到的数据 不受信任或未经身份验证的来源。
- 格式不可读。
如果您使用的是 python 2.6,则有一个名为 json 的内置模块.使用起来就像 pickle 一样简单:
import json
encoded = json.dumps(obj)
obj = json.loads(encoded)
Json 格式是人类可读的,与 python 中的字典字符串表示非常相似。并且没有任何像 pickle 这样的安全问题。但可能比 cPickle 慢。
关于Python:如何将列表写入文件,然后稍后将其拉回内存(dict表示为字符串转换为dict)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/890485/