如何使用Python合并JSON中重复日期的键值对?
合并JSON中相同日期的重复条目解决方案
实现思路
通过按日期分组的方式,将同一日期下的所有非日期键值对整合到同一个字典中,最终转换为目标格式的列表。
Python 代码实现
import json # 原始JSON数据(可替换为从文件读取的内容) raw_data = ''' [ { "date":"2018-12-01", "9":{ "mean":{ "x_axis":-0.71, "y_axis":8.75, "z_axis":5.23 } } }, { "date":"2018-12-02", "4":{ "mean":{ "x_axis":-0.76, "y_axis":7.83, "z_axis":2.63 } } }, { "date":"2018-12-02", "5":{ "mean":{ "x_axis":0.59, "y_axis":6.46, "z_axis":7.12 } } }, { "date":"2018-12-02", "10":{ "mean":{ "x_axis":1.07, "y_axis":9.46, "z_axis":0.08 } } } ] ''' # 解析JSON为Python对象 parsed_data = json.loads(raw_data) # 按日期分组存储整合后的数据 grouped_dict = {} for entry in parsed_data: current_date = entry["date"] # 提取当前条目中除date外的所有键值对 extra_fields = {key: value for key, value in entry.items() if key != "date"} if current_date not in grouped_dict: # 首次出现该日期,初始化条目 grouped_dict[current_date] = {"date": current_date} # 合并额外字段到对应日期的条目 grouped_dict[current_date].update(extra_fields) # 将分组后的字典转换为目标列表格式 final_result = list(grouped_dict.values()) # 输出格式化后的JSON print(json.dumps(final_result, indent=4))
代码说明
- JSON解析:使用
json.loads()将JSON字符串转换为Python可操作的列表对象。 - 分组逻辑:利用字典
grouped_dict的键唯一性,以日期为键存储每个日期的整合数据。 - 字段合并:遍历每个原始条目,过滤掉
date字段后,用update()方法将其余键值对合并到对应日期的条目中。 - 结果转换:将字典的值转换为列表,得到目标格式的JSON结构。
注意事项
- 如果同一日期下出现重复的数字键(比如两个
"9"字段),后面的条目会覆盖前面的。如果需要保留所有重复键的内容,可以修改逻辑为将对应值存储为列表。
内容的提问来源于stack exchange,提问作者Warlock Pheonix
相关产品推荐
相关产品推荐

