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

如何在Python 2.7中重构字典序列并输出特定格式JSON?

解决方案

没问题,我来帮你搞定这个需求!首先你得确保导入了csv和json模块,接下来我们要把CSV里的数据按规则转换成你要的JSON格式,再逐行输出到标准输出。

假设你的CSV文件列结构大概是这样的(和目标JSON字段对应):

State,Date,Value,Product,Line
CA,2015-01-01,33.5,TA,V1
CA,2016-01-01,100.8,TA,V1
CA,2018-01-01,10.1,TA,V1
NY,2015-01-01,45.2,TB,V2
NY,2016-01-01,89.7,TB,V2

下面是完整的实现代码:

import csv
import json
from collections import defaultdict

# 先按State分组存储数据,方便整理points数组
state_grouped_data = defaultdict(lambda: {
    "points": [],
    "fields": {}
})

with open("data.csv") as csvfile:
    reader = csv.DictReader(csvfile)
    for row in reader:
        state = row["State"]
        # 把日期和数值添加到points,注意Value要转成float(CSV读出来是字符串)
        state_grouped_data[state]["points"].append([row["Date"], float(row["Value"])])
        # 同一State的Product/Line假设是一致的,只在第一次存储
        if not state_grouped_data[state]["fields"]:
            state_grouped_data[state]["fields"] = {
                "Product": row["Product"],
                "Line": row["Line"]
            }

# 遍历分组后的数据,输出每个State对应的JSON
for state, data in state_grouped_data.items():
    final_json = {
        "State": state,
        "points": data["points"],
        "fields": data["fields"]
    }
    # 直接print会自动添加换行符,正好满足换行分隔的要求
    print(json.dumps(final_json))

关键细节说明:

  • 用defaultdict是为了更方便地按State分组,不用手动判断每个州是否已经在字典里。
  • 把CSV里的Value转成float是因为JSON里的数值不能是字符串类型,否则会不符合你给的示例格式。
  • 如果你的CSV里同一State对应不同的Product或Line,那需要调整分组逻辑(比如按State+Product+Line组合来分组),不然会覆盖掉之前的fields数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:29:00