在写入JSON文件时组合多个字典列表

时间:2014-11-05 22:28:18

标签: python json list dictionary io

我在收集了大量字典列表并编写dict列表列表之后尝试编写JSON文件。截至目前,输出已经添加了带空格的dict列表。 我想弄清楚如何在用逗号分隔每个索引的同时在整个输出中添加括号。

**我希望在deals_list **

中的每笔交易后更新JSON文件

url_page函数输出:

deals_list=[{u'all_deals_links': u'http://www.groupon.com/deals/the-ballet-academy-newark'}{u'all_deals_links': u'http://www.groupon.com/deals/clean-extreme-1'}]

[{....}]

这是输出:

[{"time_retrieved": "2014-11-06 09:45:28.619697", "amount_sold": ["Over 20 bought", "Over 10   bought”]}][{“time_retrieved": "2014-11-06 09:45:29.907905", "amount_sold": "Over 230 bought”}]

我想要的是:

[[{..,{},..}]]

[[{"time_retrieved": "2014-11-06 09:45:28.619697", "amount_sold": ["Over 20 bought", "Over 10   bought”]}],[{“time_retrieved": "2014-11-06 09:45:29.907905", "amount_sold": "Over 230 bought”}]]

基本上,代码通过列表进行分组,页面链接并使用url_page

提取数据
    page_data_list=[]


    with open('Updated_sample_groupon_page_data_test.json', 'a') as jsonfile:
        for data in range(starting_deal_number, len(deals_list)-1):
            page_data_list.append(url_page(str(deals_list[data]['all_deals_links'])))

            for f in page_data_list:    
                json.dump(f, jsonfile, encoding='utf8')

1 个答案:

答案 0 :(得分:0)

也许这个:

page_data_list = []

for data in range(starting_deal_number, len(deals_list)-1):
    page_data_list.append(url_page(str(deals_list[data]['all_deals_links'])))

with open('Updated_sample_groupon_page_data_test.json', 'w') as jsonfile:
    json.dump(page_data_list, jsonfile, encoding='utf8')

或更简单:

page_data_list = []

for deal in deals_list:
    page_data_list.append(url_page(str(deal['all_deals_links'])))

with open('Updated_sample_groupon_page_data_test.json', 'w') as jsonfile:
    json.dump(page_data_list, jsonfile, encoding='utf8')

编辑:如果每次附加到page_data_list都必须更新JSON文件,并且能够承受IO命中,只需在每次迭代时将整个列表重写为JSON文件:

page_data_list = []

for deal in deals_list:
    page_data_list.append(url_page(str(deal['all_deals_links'])))

    with open('Updated_sample_groupon_page_data_test.json', 'w') as jsonfile:
        json.dump(page_data_list, jsonfile, encoding='utf8')
但是,我不建议这样做,因为作为一般经验法则,磁盘IO始终是最大的瓶颈,而RAM和CPU时间充足。在大块IO中写入一次也通常比许多较小的IO更受欢迎,如果您手动修改输出JSON并且一次只从page_data_list写入一个项目,那么您将会这样做。也就是说,您操作系统上的IO电梯可能会让您觉得不明显,具体取决于您的写作频率。