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

Python如何将元组列表转换为按字段分组的指定格式字典列表

问题修正方案

你当前写的defaultdict逻辑已经完成了最核心的按z值分组的步骤,距离目标格式只差2步:

  • 给每个分组新增x字段,值为当前分组对应的z值
  • 把分组后以z为key的字典结构,拆成列表形式,每个元素就是一个目标字典

注:你给出的期望输出中case/base/standard对应的数值和输入元组的实际值不匹配,以下代码以输入元组的原始值为准,如果需要做数值换算(比如按比例缩放、聚合计算),在赋值y值的位置增加对应计算逻辑即可。

基于你现有代码的修改版本

直接在你原有代码的基础上补全转换逻辑即可,这个方案时间复杂度为O(n),数据量大的时候性能最好:

from collections import defaultdict

list_tuple= [('base', 5313, 3), ('case', 156, 3), ('standard', 482, 3),('base', 432, 4), ('case', 43, 4), ('standard', 44, 4)]

dict_tuple = defaultdict(dict)
for x, y, z in list_tuple:
    dict_tuple[z][x] = y

# 补全格式转换步骤
result = []
for group_key, group_content in dict_tuple.items():
    target_item = {"x": group_key}
    target_item.update(group_content)
    result.append(target_item)

运行后得到的输出为:

[{'x': 3, 'base': 5313, 'case': 156, 'standard': 482}, {'x': 4, 'base': 432, 'case': 43, 'standard': 44}]

其他可选实现

如果不想导入collections模块,也可以用普通字典实现相同逻辑,写法更直接:

list_tuple= [('base', 5313, 3), ('case', 156, 3), ('standard', 482, 3),('base', 432, 4), ('case', 43, 4), ('standard', 44, 4)]
result = {}
for k, val, x_val in list_tuple:
    if x_val not in result:
        result[x_val] = {"x": x_val}
    result[x_val][k] = val

# 转成目标列表格式
result = list(result.values())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 01:24:34