Python遍历嵌套JSON如何通过for循环为内层元素新增指定字段?
问题原因
- 内层循环未使用索引计数,每个item初始都被赋值positionId=1
- positionId自增逻辑写在了内层循环外,仅对最后一个遍历到的item生效
实现方案
直接通过enumerate遍历item数组获取从1开始的索引,同时完成positionId和score的赋值,修正后的代码如下:
def post(self) -> Response: data = request.get_json() for sublist in data['sublist']: # 遍历item时获取从1开始的索引 for idx, item in enumerate(sublist['item'], start=1): # 仅当positionId不存在时赋值,避免覆盖前端传入的值 if 'positionId' not in item: item['positionId'] = idx # 按规则赋值score if idx == 1: item['score'] = 3 elif idx == 2: item['score'] = 2 else: item['score'] = 1 post_list = Lists(**data).save() output = {'id': str(post_list.id)} return jsonify({'result': output})
效果验证
处理后的item数组会符合预期:
- 第一个item的positionId=1,score=3
- 第二个item的positionId=2,score=2
- 第三个及之后的item的positionId按顺序递增,score固定为1
内容的提问来源于stack exchange,提问作者planetstarbucks
相关产品推荐
相关产品推荐

