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

