如何在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
相关产品推荐
相关产品推荐

