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

Python如何将值为等长列表的字典转换为按索引分组的嵌套列表

字典转指定嵌套列表的Python实现方案

你的原始数据是按字段维度存储的字典结构,每个键对应一整列的取值,要转成按行存储的嵌套列表,核心逻辑是对齐三个值列表的索引位置,把同一行的三个元素拼接为子列表,以下是两种常用实现方式:

  • 方式一:zip函数快速实现(推荐,代码最简洁)
    zip可以并行遍历多个可迭代对象,按位置将对应元素打包为元组,只需要把打包得到的每个元组转为列表,就能得到目标结构:
# 原始字典
raw_data = {'id':[0, 1, 2, 3, 4, 5],
 'code':['A1', 'A2', 'A3', 'A4', 'A5', 'A6'],
 'price':['35', '23', '54', '17', '68', '199'] 
}

# 转换
data = [list(row) for row in zip(raw_data['id'], raw_data['code'], raw_data['price'])]

如果你的Python版本是3.7及以上(字典默认保留插入顺序),可以直接用值解包的写法,不用手动枚举每个键:
data = [list(row) for row in zip(*raw_data.values())]

  • 方式二:索引遍历实现(逻辑直白,适合新手理解)
    如果对内置函数不熟悉,可以直接通过索引循环取值,逐行拼接子列表,逻辑完全透明:
raw_data = {'id':[0, 1, 2, 3, 4, 5],
 'code':['A1', 'A2', 'A3', 'A4', 'A5', 'A6'],
 'price':['35', '23', '54', '17', '68', '199'] 
}

data = []
# 以id列表长度为总循环次数(三个列表长度一致)
for idx in range(len(raw_data['id'])):
    current_row = [
        raw_data['id'][idx],
        raw_data['code'][idx],
        raw_data['price'][idx]
    ]
    data.append(current_row)

两种方式运行后得到的data结构完全匹配你的需求:

[
   [0, 'A1', '35'],
   [1, 'A2', '23'],
   [2, 'A3', '54'],
   [3, 'A4', '17'],
   [4, 'A5', '68'],
   [5, 'A6', '199']
]

注意:如果原始字典里三个值列表长度不一致,zip会自动按最短列表截断结果,索引遍历会触发下标越界报错,转换前建议先校验三个列表长度相等,避免脏数据导致结果异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 20:36:24