Python:将值为列表的字典转换格式并导出至Excel
解决方法:将字典转换为适合导出Excel的格式
嘿,我完全懂你的需求——就是要让字典里每个列表的元素都和它所属的键一一对应,最后导出成两列的Excel文件对吧?其实用pandas就能轻松搞定,不用纠结那种重复键的字典(毕竟字典本身不允许重复键,那个思路根本走不通哦)。下面给你两种简单高效的方法:
方法一:用列表推导式构建数据结构
这种方法直接生成能被pandas识别的元组列表,逻辑清晰直观:
- 先定义你的字典(用你的示例数据举例):
my_dict = { 1: [0, 120, 115, 100, 91, 131, 74, 14, 8, 105, 122, 47, 103, 0], 2: [0, 107, 25, 26, 121, 118] }
- 用列表推导式生成键与元素的配对列表:
# 外层循环遍历字典的键值对,内层循环遍历每个列表里的元素 data = [(key, value) for key, values in my_dict.items() for value in values]
执行完这行代码后,data会变成类似[(1,0), (1,120), (1,115), ..., (2,0), (2,107), ...]的结构,完美符合你的需求。
- 转换为DataFrame并导出Excel:
import pandas as pd # 生成DataFrame并指定列名 df = pd.DataFrame(data, columns=['键', '列表元素']) # 导出到Excel,index=False是为了不导出pandas默认的索引列 df.to_excel('output.xlsx', index=False)
方法二:用pandas的explode方法(更简洁)
如果你觉得列表推导式有点绕,也可以用pandas自带的explode方法,一步拆分列表:
- 先把字典转成初始的DataFrame:
import pandas as pd my_dict = { 1: [0, 120, 115, 100, 91, 131, 74, 14, 8, 105, 122, 47, 103, 0], 2: [0, 107, 25, 26, 121, 118] } # 生成初始DataFrame,此时每个键对应一行,列表是一个单元格 df = pd.DataFrame(my_dict.items(), columns=['键', '列表元素'])
- 用
explode拆分列表为多行:
# explode会把每个列表元素拆成单独一行,同时保留对应的键 df = df.explode('列表元素', ignore_index=True)
- 导出Excel:
df.to_excel('output.xlsx', index=False)
这两种方法都能快速帮你完成格式转换,导出的Excel会有两列:一列是字典的键,另一列是对应的列表元素,完全符合你的要求。
内容的提问来源于stack exchange,提问作者Noelle
相关产品推荐
相关产品推荐

