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

Python3用string.format()格式化含可变参数的嵌套字典输出

解决嵌套字典的格式化输出问题

我来帮你搞定这个需求!我们可以用Python 3的string.format()来实现这种可变参数的格式化输出,自动忽略缺失的参数,同时保证输出的可读性。

实现代码

A = { 
    'test1':{'q0':[0.123,0.234],'phi0':[0.124,0.4325],'m':[9.42,0.3413]}, 
    'test2':{'q0':[0.343,0.353],'phi0':[0.2341,0.235]}, 
    'test3':{'q0':[0.343,0.353],'phi0':[0.2341,0.235],'m':[0.325,0.325],'z0':[0.234,0.314]} 
}

# 定义参数的输出顺序,覆盖所有可能的参数(q0、phi0、m、c、z0)
param_order = ['z0', 'q0', 'phi0', 'm', 'c']

for test_name, params in A.items():
    # 收集当前测试项中存在的参数的格式化字符串
    param_strings = []
    for param in param_order:
        if param in params:
            # 用format拼接参数名和数值对:参数名=第一个值(第二个值)
            param_str = "{}={}({})".format(param, params[param][0], params[param][1])
            param_strings.append(param_str)
    # 将所有参数字符串用空格连接,再组合测试名称输出
    formatted_line = "'{}': {}".format(test_name, ' '.join(param_strings))
    print(formatted_line)

代码说明

  1. 参数顺序控制:通过param_order列表定义参数的输出优先级,你可以根据需要调整这个列表的顺序(比如把q0放到最前面),代码会按照这个顺序检查并输出存在的参数。
  2. 自动忽略缺失参数:遍历参数顺序列表时,只有当前测试项包含该参数时,才会生成对应的格式化字符串,缺失的参数会自动跳过,不会留空占位。
  3. 格式化逻辑:用"{}={}({})".format(...)来生成单个参数的字符串,完美匹配你需要的q0=0.123(0.234)格式。
  4. 可读性优化:所有存在的参数字符串用空格连接,最终输出的格式清晰易读。

运行结果

执行代码后会输出:

'test1': q0=0.123(0.234) phi0=0.124(0.4325) m=9.42(0.3413)
'test2': q0=0.343(0.353) phi0=0.2341(0.235)
'test3': z0=0.234(0.314) q0=0.343(0.353) phi0=0.2341(0.235) m=0.325(0.325)

完全符合你的要求!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:07:02