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

如何用Python将不同键的多个字典写入同一张Excel工作表?

多字典分组写入Excel的实现方案

问题描述

我有多个键集合不同的字典,示例如下:

dict_a = {
    'a': 'a',
    'b': 'b'
}
dict_b = {
    'x': 'x',
    'y': 'y',
    'z': 'z'
}
dict_c = {
    'a': 'a',
    'm': 'm',
    'z': 'z'
}

希望将这些字典按如下格式逐组写入同一张Excel工作表:

ab
ab
xyz
xyz
amz
amz

之前尝试将字典转为列表后用pandas创建DataFrame,但它会把所有字典的键合并到第一行,生成的表格不符合需求:

abxyzm
ab
xyz
azm

请问如何实现预期的写入格式?

解决方案

推荐用openpyxl直接操作Excel,它能精细控制每个单元格的内容和格式,完美适配这种分组写入需求,步骤如下:

1. 安装依赖

如果还没装openpyxl,先执行安装命令:

pip install openpyxl

2. 编写实现代码

from openpyxl import Workbook
from openpyxl.styles import Font

# 把要写入的字典放到列表里统一处理
target_dicts = [dict_a, dict_b, dict_c]

# 创建工作簿和默认工作表
wb = Workbook()
ws = wb.active

# 记录当前写入的行号,从第1行开始
current_row = 1

for d in target_dicts:
    keys = list(d.keys())
    values = list(d.values())
    col_num = len(keys)
    
    # 写入加粗的键行
    bold_font = Font(bold=True)
    for col in range(col_num):
        cell = ws.cell(row=current_row, column=col+1, value=keys[col])
        cell.font = bold_font
    
    # 切换到下一行,写入对应的值
    current_row += 1
    for col in range(col_num):
        ws.cell(row=current_row, column=col+1, value=values[col])
    
    # 每组之间空一行(不需要的话,把下面这行改成current_row +=1)
    current_row += 2

# 保存Excel文件
wb.save("grouped_dicts.xlsx")

3. 代码说明

  • 遍历每个字典,先写加粗的键行,再写对应的值行,自动适配字典的键数量
  • 每组写完后默认空一行,可根据需求调整行号递增的数值
  • 完全避免了pandas自动合并所有列的问题,精准控制表格结构

如果一定要用pandas,需要手动构造包含空行的特殊DataFrame,但步骤繁琐,不如openpyxl直接高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 11:52:15