Python实现日期键字典到指定JSON结构的格式转换
错误原因
你的代码存在3个问题,导致输出不符合预期:
- 内层循环遍历对象错误:外层循环已经拿到当前日期对应的元组列表
val,但内层循环错误遍历了整个字典的所有值filtered_data.values(),拿到的是所有日期的元组列表集合,不是当前日期下的单条货币记录 - 取值逻辑错误:内层循环拿到的元素是一整个元组列表(例如
[('EUR', 34.02), ('USD', 30.18)]),因此v[0]、v[1]取到的是列表里的前两个元组,才会出现currency和value字段是列表/元组的问题 - 字段名不匹配:目标要求的日期字段名是
data,你的代码里写的是timestamp
正确实现代码
import json json_data = {"filtered_data": []} # 遍历原始字典,date是日期字符串,currency_tuples是当前日期对应的(货币代码, 数值)元组列表 for date, currency_tuples in filtered_data.items(): # 遍历当前日期下的每一条货币记录,直接解包元组取值 for currency_code, amount in currency_tuples: json_data["filtered_data"].append({ "data": date, "currency": currency_code, "value": amount }) # 生成格式化的JSON字符串,ensure_ascii=False避免特殊字符被强制转义 json_output = json.dumps(json_data, indent=2, ensure_ascii=False)
效果说明
运行后输出结构会完全匹配要求:同一个日期下的不同货币会被拆分为独立记录存入filtered_data数组,每个记录的currency为字符串类型的货币代码、value为对应数值,不会出现类型错位问题。
内容的提问来源于stack exchange,提问作者veoli
相关产品推荐
相关产品推荐

