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

如何从字典列表创建指定格式的Python字典?

问题解决:从字典列表生成按NUM分组的ID列表字典

原代码存在的问题

  1. 字典键赋值错误:使用data2[data2] = _id是语法错误,正确应该以num作为键,且初始值为包含当前ID的列表
  2. 未处理重复NUM的情况:当NUM已存在于字典中时,没有将新ID追加到对应列表,导致只保留第一个ID
  3. 提取ID的方式不够健壮:直接用split('-')[-1]如果后续格式变化容易出错(可选优化)

修正后的基础实现

data = [{'object': 'XXXX-TSS/RDID-1579/NBLO-723/NUM-13/ID-16'},
{'object': 'XXXX-TSS/RDID-1579/NBLO-723/NUM-131/ID-12'}, 
{'object': 'XXXX-TSS/RDID-1579/NBLO-723/NUM-132/ID-9'}, 
{'object':'XXXX-TSS/RDID-1579/NBLO-723/NUM-13/ID-4'}, 
{'object': 'XXXX-TSS/RDID-1579/NBLO-723/NUM-131/ID-11'}, 
{'object': 'XXXX-TSS/RDID-1579/NBLO-723/NUM-132/ID-8'}]
data2 = {}
for row in data:
    obj = row['object']
    # 提取NUM值
    num = obj.split('/')[3].split('-')[-1]
    # 提取ID值(改为按分割后的第4部分提取,更准确)
    _id = int(obj.split('/')[4].split('-')[-1])
    # 更新字典:不存在则初始化列表,存在则追加ID
    if num not in data2:
        data2[num] = [_id]
    else:
        data2[num].append(_id)
print(data2)

执行后输出:

{'13': [16, 4], '131': [12, 11], '132': [9, 8]}

更健壮的优化实现(适配格式变化)

如果后续object字段的部分顺序可能改变,建议先解析所有键值对再提取NUM和ID:

data = [{'object': 'XXXX-TSS/RDID-1579/NBLO-723/NUM-13/ID-16'},
{'object': 'XXXX-TSS/RDID-1579/NBLO-723/NUM-131/ID-12'}, 
{'object': 'XXXX-TSS/RDID-1579/NBLO-723/NUM-132/ID-9'}, 
{'object':'XXXX-TSS/RDID-1579/NBLO-723/NUM-13/ID-4'}, 
{'object': 'XXXX-TSS/RDID-1579/NBLO-723/NUM-131/ID-11'}, 
{'object': 'XXXX-TSS/RDID-1579/NBLO-723/NUM-132/ID-8'}]
data2 = {}
for row in data:
    obj = row['object']
    # 解析每个部分为键值对
    info = {}
    for part in obj.split('/')[1:]:  # 跳过开头的XXXX-TSS部分
        key, value = part.split('-', 1)  # 仅分割第一个'-',避免值含'-'的情况
        info[key] = value
    num = info['NUM']
    _id = int(info['ID'])
    # 更新字典:用setdefault简化判断逻辑
    data2.setdefault(num, []).append(_id)
print(data2)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 11:30:51