You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python循环导出JSON仅输出最后一项的问题求助

问题分析与解决方案

嘿,我来帮你搞定这个问题~ 你现在遇到的情况很典型:每次循环都在覆盖同一个变量Export_tojson,所以最后只会保留最后一次循环(也就是Retail类别)的结果,而且你也没把每个类别的数据保存下来。下面给你两种实用的解决方案,看你需求选哪种:

方案1:每个类别导出单独的JSON文件

如果希望每个类别的数据分开存储,只需要在循环里给每个JSON文件起不同的名字就行,比如用类别名作为文件名的一部分:

import datetime
import pandas as pd

today = (datetime.date.today() + datetime.timedelta(days=1)).isoformat() + "T05:00:00"
start = (datetime.date.today() - datetime.timedelta(days=7)).isoformat() + "T05:00:00"
myList = ['Financials', 'Industry', 'Health Wellbeing', 'Manufacturing', 'Retail']

# 注意:别用list当变量名,这是Python内置的类型,容易出问题,改成category更清晰
for category in myList:
    filtered = queries.get_mentions(name=category, startDate=start, endDate=today)
    df = pd.DataFrame(filtered, columns=['account', 'addedtime', 'author', 'id', 'impact', 'snippet'])
    # 用f-string生成带类别名的文件名,避免覆盖
    df.to_json(f'{category}_mentions.json', orient='records')

这样运行后,你会得到5个JSON文件:Financials_mentions.json、Industry_mentions.json……每个文件对应一个类别的数据,不会再被覆盖啦。

方案2:把所有类别数据合并成一个JSON文件

如果希望所有数据存在同一个JSON里,可以用字典来收集每个类别的数据,最后统一导出:

import datetime
import pandas as pd
import json

today = (datetime.date.today() + datetime.timedelta(days=1)).isoformat() + "T05:00:00"
start = (datetime.date.today() - datetime.timedelta(days=7)).isoformat() + "T05:00:00"
myList = ['Financials', 'Industry', 'Health Wellbeing', 'Manufacturing', 'Retail']
all_category_data = {}

for category in myList:
    filtered = queries.get_mentions(name=category, startDate=start, endDate=today)
    df = pd.DataFrame(filtered, columns=['account', 'addedtime', 'author', 'id', 'impact', 'snippet'])
    # 先把DataFrame转成字典格式,方便存入大字典
    all_category_data[category] = df.to_dict(orient='records')

# 把所有数据写入一个JSON文件,indent=4让格式更美观
with open('all_mentions_data.json', 'w') as json_file:
    json.dump(all_category_data, json_file, indent=4)

导出的JSON结构会是这样的:

{
    "Financials": [{"account": "...", ...}, ...],
    "Industry": [{"account": "...", ...}, ...],
    ...
}

小提醒

  • 尽量别用list、dict这种Python内置类型的名字当变量名,容易和内置功能冲突,引发奇怪的错误;
  • 如果你的数据量很大,合并成一个JSON可能会占用较多内存,这时候方案1(单独存文件)会更合适。

内容的提问来源于stack exchange,提问作者Ryan White

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:37:02