[英]Write multiple lists to a JSON file in python
假設我有以下列表
list1 = [{"created_at": "2012-01-31T10:00:04Z"},{"created_at": "2013-01-31T10:00:04Z"}]
list2 = [{"created_at": "2014-01-31T10:00:04Z"}]
我可以使用json.dump(list1,file,indent=2)
將第一個列表寫入 JSON 文件json.dump(list1,file,indent=2)
結果是
[
{
"created_at": "2012-01-31T10:00:04Z"
},
{
"created_at": "2013-01-31T10:00:04Z"
}
]
我的問題是,如何附加第二個列表的內容? 如果我簡單地做json.dump(list2,file,indent=2)
,它會導致一個無效的 JSON 文件,如下所示。
[
{
"created_at": "2012-01-31T10:00:04Z"
},
{
"created_at": "2013-01-31T10:00:04Z"
}
][
{
"created_at": "2014-01-31T10:00:04Z"
}
]
編輯:列表是通過解析大約 8000 個文件動態創建的。 上面的列表只是示例。 我可能會向 JSON 文件寫入 8000 個列表,因此簡單的追加將不起作用。
In [1]: import json
In [2]: list1 = [{"created_at": "2012-01-31T10:00:04Z"},{"created_at": "2013-01-31T10:00:04Z"}]
In [3]: list2 = [{"created_at": "2014-01-31T10:00:04Z"}]
In [4]: list1.extend(list2)
In [5]: json.dumps(list1)
Out[5]: '[{"created_at": "2012-01-31T10:00:04Z"}, {"created_at": "2013-01-31T10:00:04Z"}, {"created_at": "2014-01-31T10:00:04Z"}]'
或
In [8]: json.dumps(list1 + list2)
Out[8]: '[{"created_at": "2012-01-31T10:00:04Z"}, {"created_at": "2013-01-31T10:00:04Z"}, {"created_at": "2014-01-31T10:00:04Z"}]'
解析文件時,附加(或擴展)到一個唯一的列表並最終轉換為 JSON。 假設您的 parse 函數是parse
。
>>> import json
>>> result = []
>>> for file in files:
... result.append(parse(file))
...
>>> json.dump(result, file1, indent=2)
我發現下面給出的解釋有點缺乏,這就是為什么試圖在這里考慮一個觀點。 一個Json
文件可以有一個單一的父元素。 因此,如果在第一次迭代時轉儲第一個列表,然后在第二次迭代時,您將在文件中得到格式錯誤。 B/c Json 要求在轉儲之前將這兩個列表包裝在一個列表/數組中。
因此,您將所有列表存儲在一個列表中(使用附加或任何其他上述方法)。 然后你將這個聚合列表轉儲到你的Json
文件中。 但是,如果您不想這樣做,則必須為不同的列表創建不同的文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.