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

Python如何从嵌套字典生成Unix命令行格式的表格

解决方案

方案1:Python + Pandas 实现(适配你原有的技术选型)

你遇到的pandas不支持的问题是因为没有指定字典的加载方向,调整参数即可直接适配,完整代码如下:

import pandas as pd
from tabulate import tabulate

# 输入的原始嵌套字典
config_changes = {
    'PERFORMANCE_SCHEMA_DIGESTS_SIZE': {'To': '-1', 'From': '10000'},
    'PERFORMANCE_SCHEMA_SESSION_CONNECT_ATTRS_SIZE': {'To': '-1', 'From': '512'},
    'ENCRYPT_TMP_DISK_TABLES': {'To': 'OFF', 'From': 'ON'},
    'INNODB_READ_IO_THREADS': {'To': '4', 'From': '10'}
}

# 转换为DataFrame,orient参数指定外层字典的key作为行索引
df = pd.DataFrame.from_dict(config_changes, orient='index').reset_index()
# 重命名列名匹配输出要求
df.columns = ['Parameter', 'Previous Value(From)', 'Current Value(To)']

# 输出指定格式的ASCII表格,tablefmt='grid'就是你要的分隔线样式
print(tabulate(df, headers='keys', tablefmt='grid', showindex=False))

如果不想安装tabulate依赖,也可以直接用pandas内置的to_string方法调整格式输出。

方案2:纯Unix命令行实现(无需Python环境)

先把你的字典保存为标准JSON格式的文件diff.json,然后直接执行以下命令即可生成目标表格:

jq -r 'to_entries[] | [.key, .value.From, .value.To] | @tsv' diff.json | awk '
BEGIN {
    # 打印表头分隔线和表头
    print "-------------------------------------------------------------------------------"
    printf "| %-32s | %-20s | %-18s |\n", "Parameter", "Previous Value(From)", "Current Value(To)"
    print "-------------------------------------------------------------------------------"
}
# 逐行打印内容和分隔线
{
    printf "| %-32s | %-20s | %-18s |\n", $1, $2, $3
    print "-------------------------------------------------------------------------------"
}'

你可以根据参数名的最大长度调整printf中的列宽数值,适配不同长度的配置项名称。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 04:24:04