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

如何按Cate值筛选并转换List of Dictionaries中的数据?

Python实现指定分类的字典重组方案

核心思路

  • 先精准筛选出符合要求的Cate值:仅保留以GD或LD开头,且后缀为31/33/35/37/39的字典元素
  • 对每个符合条件的元素,根据Cate前缀(GD/LD)重命名Name字段为Name_G或Name_L,只保留Id和新的Name字段
  • 最后将处理后的元素按Cate值分组,整理成你需要的列表嵌套字典结构

完整实现代码

p = [ {"Id": "47","Name": "l","Cate": "GD31","Mark": 0,"Code": "l"}, {"Id": "58","Name": "k","Cate": "GD33","Mark": 0,"Code": "k"}, {"Id": "40","Name": "j","Cate": "GD35","Mark": 0,"Code": "j"}, {"Id": "15","Name": "i","Cate": "GD37","Mark": 0,"Code": "i"}, {"Id": "39","Name": "h","Cate": "GD39","Mark": 0,"Code": "h"}, {"Id": "75","Name": "g","Cate": "LD31","Mark": 0,"Code": "g"}, {"Id": "12","Name": "f","Cate": "LD33","Mark": 0,"Code": "d"}, {"Id": "92","Name": "e","Cate": "LD35","Mark": 0,"Code": "e"}, {"Id": "42","Name": "d","Cate": "LD37","Mark": 0,"Code": "d"}, {"Id": "11","Name": "c","Cate": "LD39","Mark": 0,"Code": "c"}, {"Id": "51","Name": "b","Cate": "SWW","Mark": 0,"Code": "b"}, {"Id": "13","Name": "a","Cate": "SMM","Mark": 0,"Code": "a"} ]

# 定义需要处理的分类后缀,确保只筛选GD31/LD31这类成对的分类
target_suffixes = {'31', '33', '35', '37', '39'}

# 初始化分组用的字典
grouped_data = {}

for item in p:
    cate = item['Cate']
    # 检查当前元素的Cate是否符合规则
    if (cate.startswith('GD') or cate.startswith('LD')) and cate[2:] in target_suffixes:
        # 根据前缀确定Name的新键名
        name_key = 'Name_G' if cate.startswith('GD') else 'Name_L'
        # 构造只包含需要字段的新字典
        processed_item = {
            'Id': item['Id'],
            name_key: item['Name']
        }
        # 按Cate值分组,没有对应键就创建新列表
        if cate not in grouped_data:
            grouped_data[cate] = []
        grouped_data[cate].append(processed_item)

# 转换成目标要求的列表格式
new = [grouped_data]

# 打印结果验证(可选)
import json
print(json.dumps(new, indent=2))

代码说明

  1. 筛选逻辑:通过target_suffixes限定后缀,结合startswith判断前缀,确保只处理你需要的分类,不会误处理SWW/SMM这类无关元素
  2. 字段重命名:根据Cate的前缀动态生成Name的新键名,自动区分GD和LD对应的字段
  3. 分组整理:用字典按Cate值分组存储处理后的元素,最后把字典包裹进列表,完全匹配你要的new结构

运行结果

执行代码后,new的结构如下:

[
  {
    "GD31": [
      {
        "Id": "47",
        "Name_G": "l"
      }
    ],
    "GD33": [
      {
        "Id": "58",
        "Name_G": "k"
      }
    ],
    "GD35": [
      {
        "Id": "40",
        "Name_G": "j"
      }
    ],
    "GD37": [
      {
        "Id": "15",
        "Name_G": "i"
      }
    ],
    "GD39": [
      {
        "Id": "39",
        "Name_G": "h"
      }
    ],
    "LD31": [
      {
        "Id": "75",
        "Name_L": "g"
      }
    ],
    "LD33": [
      {
        "Id": "12",
        "Name_L": "f"
      }
    ],
    "LD35": [
      {
        "Id": "92",
        "Name_L": "e"
      }
    ],
    "LD37": [
      {
        "Id": "42",
        "Name_L": "d"
      }
    ],
    "LD39": [
      {
        "Id": "11",
        "Name_L": "c"
      }
    ]
  }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:40:22