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

如何将值为列表的Python字典转换为元素为字典的列表 可使用列表推导式

Python字典格式转换实现方案

错误原因分析

你提供的代码无法正常运行的核心问题是for i in x逻辑错误:直接遍历字典x时,遍历对象是字典的键(即a/b/c/d),而非你需要的列表索引值0/1/2,自然无法通过v[i]取到对应位置的元素。

优先推荐:列表推导式实现

方案1(原始写法逻辑修正版)

# 原字典定义
x = {'a':[1,2,3], 'b':[4,5,6], 'c': [7,8,9], 'd': [10,11,12]}
# 列表推导式转换
result = [{k: v[i] for k, v in x.items()} for i in range(len(next(iter(x.values()))))]

说明:这里通过next(iter(x.values()))取原字典第一个值的列表长度(默认所有值对应的列表长度一致,符合你给出的示例场景),用range生成对应的索引值遍历。

方案2(更简洁的列表推导式写法)

结合zip打包对应位置元素,代码可读性更高:

x = {'a':[1,2,3], 'b':[4,5,6], 'c': [7,8,9], 'd': [10,11,12]}
result = [dict(zip(x.keys(), vals)) for vals in zip(*x.values())]

说明:zip(*x.values())会将所有值列表的对应位置元素打包为元组,和字典的键一一对应后直接转为字典即可得到目标子元素。

输出验证

两种方案得到的result都和你要求的目标格式完全一致:

[{'a': 1, 'b': 4, 'c': 7, 'd': 10},
 {'a': 2, 'b': 5, 'c': 8, 'd': 11},
 {'a': 3, 'b': 6, 'c': 9, 'd': 12}]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 05:45:01