Python如何对嵌套JSON字典按sender字段分组得到目标结构
实现方案
你可以直接通过嵌套遍历原始字典完成分组,该方法时间复杂度为O(n)(n为所有子项总数),效率远高于需要预排序的itertools.groupby方案:
示例代码
import json # 假设你已经把原始JSON解析为Python字典,变量名为original_data # 如果是JSON字符串,先执行 original_data = json.loads(你的JSON字符串) result = {} for top_key, sub_items in original_data.items(): result[top_key] = {} for item_id, item_info in sub_items.items(): sender_val = item_info["sender"] # 对应sender不存在则初始化 if sender_val not in result[top_key]: result[top_key][sender_val] = {} result[top_key][sender_val][item_id] = item_info # 如果需要转回JSON字符串 output_json = json.dumps(result, indent=2, ensure_ascii=False) print(output_json)
注意事项
- 你提供的原始JSON存在大量尾部逗号(每个对象最后一个键值对后多余的逗号),不符合标准JSON规范,直接用
json.loads解析会报错,你可以先清理这些尾部逗号,或者使用demjson等兼容非标准JSON的库完成解析。 - 该方案不需要引入额外依赖,遍历一次即可得到目标结构,适合处理任意量级的同结构数据。
内容的提问来源于stack exchange,提问作者Ayush Saini
相关产品推荐
相关产品推荐

