python - 如何在Python中存储嵌套数据?

标签 python json data-structures pickle

我嵌套了标记为“书籍”的数据,如下所示,

book0 = {'authorId': u'4657987','bookId': u'3532901',
 'genre': u'horror','freeChapters': [[u'2015-07-03 15:14:25', u'3376'],
  [u'2015-07-03 17:52:39', u'2116'],...,[u'2015-07-26 20:08:11', u'2120'],
  [u'2015-07-27 20:12:12', u'2139']],'updateStatus': u'to be continued',
 'wordCount': u'56322'} 

book1 = {'authorId': u'3840480','bookId': u'3453158',
 'genre': u'romance','freeChapters': [[u'2015-04-07 18:58:15', u'317'],
  [u'2015-04-02 21:46:36', u'2103'],
  [u'2015-04-03 13:02:17', u'2416'], ...,
  [u'2015-07-24 00:07:43', u'2195']],'updateStatus': u'completed',
 'chargedChapters': [[u'2015-07-25 14:14:53', u'10'],
  [u'2015-07-26 00:07:46', u'11'],
  [u'2015-07-27 00:07:58', u'10'],
  [u'2015-07-28 00:07:52', u'10']],
 'wordCount': u'269059'}

...

我预计会有大约 200,000 个这样的对象,每个对象都是从互联网上抓取的。鉴于每本书都需要花费一些精力和时间,我想将它们一一保存下来。我认为 JSON 不允许我这样做,而且我目前正在使用 pickle。然而,稍后我可能需要引用某本书。我担心我必须一遍又一遍地解泡才能做到这一点。就我而言,存储这些对象的最佳方式是什么?

我最终选择了行分隔的 JSON。

最佳答案

政治正确的答案是“视情况而定”。也就是说,请使用 JSON

Pickle 是一种功能强大的格式,能够重建丰富数据类型的复杂对象。然而,它相对较慢,它将您与 python 绑定(bind)在一起,并且对于不受信任的数据并不是 100% 安全。 它提供了丰富的打字功能,但不具备速度、便携性或安全性。它也人类不可读

XML 是一种旧格式,即将不再使用。它不直接映射到面向对象的设计。在大多数现代语言中读取和写入 XML 都是繁琐、冗长的,并且会产生令人不安的抽象。 现在使用 XML 的理由很少

JSON 是一种得到广泛采用的轻量级格式。它提供有限的数据类型(例如缺少日期)。这意味着字符串化很多类型,但也意味着格式相对安全:不受信任的数据不会让您感到惊讶。它快速、高度便携且易于阅读。它几乎直接映射到面向对象的设计。有许多用于处理 JSON 的库和工具,这意味着它可以轻松转换为其他格式

JSON 是默认选择。除非有理由避免它,否则就使用它。无论如何,您都可以从 JSON 开始,然后再切换。

关于python - 如何在Python中存储嵌套数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31666456/

相关文章:

python - 如何使用 python 检查字符串是否符合某些特定的 ABNF 规则?

python - 将变量(带评估)导入到类命名空间(即 self.varName)

尝试从 API 获取 JSON 时,Java Spring 出现错误 404。从事 postman 工作

arrays - 包含整数的数组的排列变体

javascript - 具有 8 个不同值集的对象

python - 限制ElasticSearch输出的数量

Python- 使用 SIGINT 杀死线程- 未正确引用全局变量

javascript - jQuery Ajax 中为全局变量赋值的问题

json - 如何使用 POSTMAN 读取名称中带有句号的 JSON 对象?

使用数组的循环队列操作