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

如何用Python将TSV数据重组为分组式列表嵌套字典结构?

实现TSV解析数据的分组嵌套重组(Python)

问题场景

原始解析后的TSV数据为平级列表结构:

[
    {'id':'group1'},
    {'id':'member1', 'parentId':'group1', 'size':51},
    {'id':'member2', 'parentId':'group1', 'size':16},
    {'id':'group2'},
    {'id':'member1', 'parentId':'group2', 'size':21},
    # 更多数据...
]

需要将其重组为按分组嵌套的列表结构:

[
    [
        {'id':'group1'},
        {'id':'member1', 'parentId':'group1', 'size':51},
        {'id':'member2', 'parentId':'group1', 'size':16}
    ],
    [
        {'id':'group2'},
        {'id':'member1', 'parentId':'group2', 'size':21},
    ]
]

核心难点是每个分组的成员数量不固定,无法提前判断分组边界;之前尝试通过计数group出现次数的方法报错'list' object has no attribute 'get',原因是误对列表调用了字典的get()方法。

解决方案代码

original_data = [
    {'id':'group1'},
    {'id':'member1', 'parentId':'group1', 'size':51},
    {'id':'member2', 'parentId':'group1', 'size':16},
    {'id':'group2'},
    {'id':'member1', 'parentId':'group2', 'size':21},
    # 可添加更多测试数据
]

result = []
current_group = None

for item in original_data:
    # 识别分组元素(无parentId字段)
    if 'parentId' not in item:
        current_group = [item]
        result.append(current_group)
    else:
        # 将成员元素加入当前分组
        if current_group is not None:
            current_group.append(item)

# 输出重组后的结构
print(result)

代码逻辑说明

  1. 初始化结果列表result和当前分组变量current_group;
  2. 遍历原始数据中的每个元素:
    • 若元素不含parentId,说明是新分组的起始,创建新的子列表并加入result,同时将该子列表设为当前活跃分组;
    • 若元素含parentId,说明是成员,直接追加到当前活跃分组中;
  3. 遍历完成后,result即为所需的嵌套分组结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 16:27:26