如何将值为列表的Python字典转换为字典列表(不依赖第三方库)
原生Python实现方案
不需要依赖任何第三方库,用Python内置函数即可实现,以下是两种常用写法:
通用写法(支持任意数量键)
只要字典中所有值对应的列表长度一致,不管有多少个键都可以直接使用:
my_dict = {'index':[1,2,3], 'answer':['A','D','B']} result = [dict(zip(my_dict.keys(), vals)) for vals in zip(*my_dict.values())]
运行后result的输出即为目标格式:
[{'index': 1, 'answer': 'A'}, {'index': 2, 'answer': 'D'}, {'index': 3, 'answer': 'B'}]
实现逻辑说明:
zip(*my_dict.values())会将字典中所有值列表按位置配对,示例中会生成(1, 'A')、(2, 'D')、(3, 'B')三组元组zip(my_dict.keys(), vals)将字典的键和当前位置的对应值配对,转成字典即为单条结果- 列表推导遍历所有配对元组,最终得到完整的字典列表
如果使用Python 3.10及以上版本,可以给zip添加strict=True参数,当值列表长度不一致时会直接抛出异常,避免静默截断导致数据错误:
result = [dict(zip(my_dict.keys(), vals)) for vals in zip(*my_dict.values(), strict=True)]
固定键简化写法
如果明确字典的键固定为index和answer,可以写得更直白易懂:
result = [{'index': i, 'answer': a} for i, a in zip(my_dict['index'], my_dict['answer'])]
内容的提问来源于stack exchange,提问作者Adi
相关产品推荐
相关产品推荐

