You need to enable JavaScript to run this app. Python如何基于字典内的列表值生成不含键的美观格式化表格
优惠活动
大模型
产品
解决方案
定价
更多

Python如何基于字典内的列表值生成不含键的美观格式化表格

Python 生成整洁对齐的列表字典表格方案

原生无依赖实现(无需安装第三方库)

适配中英文混排的显示宽度差异,自动计算每列最大宽度,无需额外安装包。

# 示例测试数据(可替换为你的实际字典)
data = {
    "任意键1": ["姓名", "年龄", "城市", "职业", "入职时间"],
    "任意键2": ["张三", "28", "上海", "后端开发工程师", "2021-03"],
    "任意键3": ["李四", "35", "北京", "产品经理", "2018-07"],
    "任意键4": ["王五五", "22", "深圳", "UI设计师", "2023-09"]
}

def print_aligned_table(data_dict):
    # 提取所有列表数据,自动丢弃字典键
    rows = [list(row) for row in data_dict.values()]
    # 自动获取列数,适配你的5元素列表场景
    col_count = len(rows[0])

    # 计算每列的实际显示宽度,兼容中文占2个字符显示宽度的问题
    col_widths = []
    for col_idx in range(col_count):
        max_display_width = 0
        for row in rows:
            cell_str = str(row[col_idx])
            # 逐字符判断是中文(占2宽)还是英文/符号(占1宽)
            cell_display_width = sum(2 if ord(c) > 127 else 1 for c in cell_str)
            if cell_display_width > max_display_width:
                max_display_width = cell_display_width
        # 额外加2个空格做内边距,提升观感
        col_widths.append(max_display_width + 2)

    # 逐行打印表格
    for row_idx, row in enumerate(rows):
        formatted_cells = []
        for col_idx, cell in enumerate(row):
            cell_str = str(cell)
            cell_display_width = sum(2 if ord(c) > 127 else 1 for c in cell_str)
            # 补空格对齐当前列
            padding = col_widths[col_idx] - cell_display_width
            formatted_cells.append(cell_str + " " * padding)
        # 用|分隔列,首尾加|形成完整边框
        print("|" + "|".join(formatted_cells) + "|")

        # 第一行默认作为表头,打印分隔线,不需要表头可删除这两行
        if row_idx == 0:
            sep_line = "|" + "|".join(["-" * w for w in col_widths]) + "|"
            print(sep_line)

# 调用执行
print_aligned_table(data)

运行后输出效果:

| 姓名  | 年龄  | 城市  | 职业            | 入职时间  |
|------|------|------|----------------|----------|
| 张三  | 28   | 上海  | 后端开发工程师  | 2021-03  |
| 李四  | 35   | 北京  | 产品经理        | 2018-07  |
| 王五五| 22   | 深圳  | UI设计师        | 2023-09  |

第三方库实现(快速开发/多格式需求)

如果需要更丰富的表格样式,推荐用成熟的第三方库,代码更简洁。

1. tabulate(轻量,支持Markdown等多种格式)

先安装依赖:
pip install tabulate

代码示例:

from tabulate import tabulate

# 提取所有行数据,自动丢弃字典键
rows = list(data.values())
# 直接生成表格,tablefmt可切换样式,常用值:
# grid: 带实线边框  github: 标准Markdown格式  plain: 无框纯对齐
print(tabulate(rows, tablefmt="grid"))

如果需要生成可直接粘贴到Markdown文档的表格,把tablefmt改成"github"即可。

2. PrettyTable(功能丰富,支持CLI交互)

先安装依赖:
pip install prettytable

代码示例:

from prettytable import PrettyTable

rows = list(data.values())
# 第一行设为表头,不需要表头可设置header=False
pt = PrettyTable(header=True)
pt.field_names = rows[0]
pt.add_rows(rows[1:])
# 直接打印
print(pt)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.30 13:15:03