You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django中如何按相同关联key值将字典转换为指定格式JSON数组?

Django 批量字段分组合并实现方案

实现思路

  • 遍历原始字典键值对,拆分每个键得到字段名和方括号内的分组标识
  • 以分组标识为key构建临时存储字典,将同组字段存入同一个子对象
  • 对数值类字段做类型转换后,提取临时字典的values即为目标结果

完整实现代码

# 原始数据,Django场景下可直接替换为 request.POST 等获取到的QueryDict对象
raw_data = {
    'include_product_id[x_734652]': ['1'], 
    'product_name[x_734652]': ['Test_1'],
    'product_qty[x_734652]': ['1'], 
    'product_price[x_734652]': ['10'],
    'total_amount[x_734652]': ['10'], 
    'include_product_id[x_332559]': ['2'], 
    'product_name[x_332559]': ['Test_2'], 
    'product_qty[x_332559]': ['10'], 
    'product_price[x_332559]': ['10'], 
    'total_amount[x_332559]': ['100']
}

# 临时存储分组数据
group_map = {}

for raw_key, val_list in raw_data.items():
    # 拆分键名,分离字段和分组标识
    field, group_id_part = raw_key.split('[', 1)
    group_id = group_id_part.rstrip(']')
    # 取列表第一个元素作为实际值
    real_val = val_list[0]
    # 数值类型字段转换为整型,可根据需求调整转换规则
    if field in ('include_product_id', 'product_qty', 'product_price', 'total_amount'):
        real_val = int(real_val)
    # 写入分组
    if group_id not in group_map:
        group_map[group_id] = {}
    group_map[group_id][field] = real_val

# 转换为目标数组格式
result = list(group_map.values())

输出JSON格式结果

如果需要输出JSON字符串,可调用json模块处理:

import json
print(json.dumps(result, indent=2, ensure_ascii=False))

注意事项

  • Django场景下如果是从POST请求获取参数,直接遍历request.POST即可,无需额外转换为dict
  • 若存在浮点类型的价格字段,可将对应位置的int()修改为float()适配

内容的提问来源于stack exchange,提问作者vinitha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 20:57:04