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

Python 3:基于Name键分组重组大型字典列表的实现问询

按name分组重组字典列表的Python实现方案

方法一:使用collections.defaultdict(推荐,适合大型数据集)

这是最稳健高效的方案,只需遍历一次原始数据,时间复杂度为O(n),同时能妥善处理names集合中存在但tsv_data里没有对应数据的情况(比如示例中的jack)。

from collections import defaultdict

# 初始化分组容器,默认值为空列表
grouped = defaultdict(list)

# 遍历原始数据,按name分组
for item in tsv_data:
    grouped[item['name']].append(item)

# 生成最终要求的结构,确保包含names中的所有name
result = [
    {'name': name, 'children': grouped.get(name, [])}
    for name in names
]

方法二:使用普通字典(无需额外导入模块)

如果不想引入collections模块,也可以用普通字典手动处理键不存在的情况:

grouped = {}

for item in tsv_data:
    name = item['name']
    if name not in grouped:
        grouped[name] = []
    grouped[name].append(item)

# 生成最终结构
result = [
    {'name': name, 'children': grouped.get(name, [])}
    for name in names
]

说明

  • 两种方法都仅需遍历一次tsv_data,处理大型数据时性能优异
  • 最终结果会严格包含names集合中的所有name,即使该name在tsv_data中没有对应条目,children也会是一个空列表
  • 原始数据中的字典会被直接添加到对应分组,不会修改原数据结构

内容的提问来源于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.13 06:50:28