1

在我在这里提出的一个较早的问题之后(将一个类的特征组合到另一个类的最合适的方法?)我得到了一个我终于明白的答案。简而言之,我现在打算拥有一堆字典,每个字典看起来有点像这样:

{ "url": "http://....", "parser": SomeParserClass } 

尽管稍后可能会添加更多属性,但将包括字符串或其他一些类。现在我的问题是:保存这些对象的最佳方法是什么?

我想到了 3 个解决方案,不确定哪个是最好的,以及是否还有其他更可接受​​的解决方案。

  1. 使用pickle,虽然使用它似乎很有效,但编辑任何这些字典都会很痛苦,因为它是以二进制格式保存的。

  2. 将每个字典保存在单独的模块中并从单个目录动态导入这些模块,每个模块内部都有一个函数来返回字典或特制的变量名称来保存它,以便我可以从加载代码中调用它。这似乎更容易编辑,但听起来不是很有效或 pythonic

  3. 使用某种数据库,如 MongoDB 或 Riak 来保存这些对象,我对这个的问题是编辑是可行的,但听起来并不有趣,而且前 2 个配备了正确保存我的解析器类的方法字典,我不知道这些数据库如何序列化或“腌制”这些对象。

正如您所看到的,我主要关心的是编辑它们的难易程度、保存和检索数据的效率(虽然不是一个大问题,因为我只有几百个这样的数据)以及解决方案的正确性。

那么,有什么想法吗?

提前感谢您提供的任何帮助。

4

2 回答 2

3

使用 JSON。它支持python字典并且可以很容易地编辑。

于 2013-08-27T13:47:24.800 回答
0

你可以试试搁置。它建立在之上,pickle让您可以序列化对象并将它们与字符串键相关联。

因为它基于dbm,它只会在您需要时访问键/值。因此,如果您只需要访问大型字典中的几个项目,shelve可能是比json必须先将整个 JSON 文件加载到字典中更好的选择。

于 2013-08-27T16:11:44.770 回答