无需嵌套for循环处理多维JSON列表并提取指定字段方案求助
JSON字段提取优化方案
优化思路
- 取消无意义的索引遍历,直接迭代列表元素,大幅提升代码可读性
- 提前提取同一根节点下共用的
ratePlanCode、dynamicBaseRate字段,避免内层循环重复取值,降低不必要的性能损耗 - 若业务确认
ratePlanBasedOnRates仅存在1个有效对象,可直接取首个元素省掉第三层嵌套循环
优化后代码
# 存储最终提取结果 result = [] # 直接迭代JSON根列表元素,不需要索引 for item in json_list: # 提取当前节点下的共用字段,仅执行1次 schedule_list = item["ratePlanScheduleList"] rate_plan_code = schedule_list["ratePlanCode"] # 提前提取dynamicBaseRate,示例中仅1个有效项直接取索引0,多个的话可先遍历存为列表 dynamic_base_rate = item["ratePlanMasterInfo"]["ratePlanBasedOnRates"][0]["dynamicBaseRate"] # 迭代每个ratePlanSchedule元素 for schedule in schedule_list["ratePlanSchedule"]: detail = schedule["ratePlanScheduleDetail"] # 按要求组装单条结果存入列表 result.append({ "rateAmounts": detail["rateAmounts"], "roomTypeList": detail["roomTypeList"], "ratePlanCode": rate_plan_code, "dynamicBaseRate": dynamic_base_rate })
效果说明
所有目标字段会按ratePlanSchedule的粒度汇总到result列表中,每个元素对应你需要的全部字段,可直接用于后续业务处理,同时也修正了你原有代码里缺方括号的语法错误。
内容的提问来源于stack exchange,提问作者Amar
相关产品推荐
相关产品推荐

