python - 具有可变数字参数的 Python 中的字符串格式

标签 python string python-3.x dictionary format

我有一个 dict 看起来像

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]}
    }

我想打印每个单独的字典:

'test1':                 q0=0.123(0.234) phi0=0.123(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)

如何在 Python 3 中使用 string.format() 做到这一点?由于每个子词典都有可变数量的“参数”,我不确定如何使用一些列表/词典理解来完成它。另外,如果像显示的那样缺少该参数,如果我想留一些空间,我该怎么做?每个字典最多有五个不同的参数 (q0,phi0,m,c,z0)。我只是将它打印到终端,所以我不需要非常花哨的东西,但我希望它可以更具可读性。

最佳答案

请注意,字典是无序的数据结构,因此您不能期望在打印项目时有任何顺序,除非您使用它们的有序等效 collections.OrderedDict()。不过,您可以在 str.join() 方法中使用生成器表达式:

In [4]: for key, value in A.items():
    print(','.join(("{}: {}={}({})".format(key, t1,t2,t3) for t1, (t2, t3) in value.items())))
   ...:     
test1: q0=0.123(0.234),test1: phi0=0.124(0.4325),test1: m=9.42(0.3413)
test3: q0=0.343(0.353),test3: phi0=0.2341(0.235),test3: m=0.325(0.325),test3: z0=0.234(0.314)
test2: q0=0.343(0.353),test2: phi0=0.2341(0.235)

另请注意,由于我们正在进行以下内联解包,因此如果列表中的项目数量多于/少于两个,则可能会引发 ValueError。

for t1, (t2, t3) in value.items()

因此,请确保解包变量的数量与列表中的项目数量相匹配。

关于python - 具有可变数字参数的 Python 中的字符串格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48073161/

相关文章:

python - Django 重置密码未捕获无效的电子邮件 ID

python - Pandas groupby 标识另一列中具有最大值的元素

python - 如何在 Ubuntu 10.04 上为 python 3 安装 pycairo

python - 夏令时更改会影响保存和加载 icalendar 文件的结果吗?

python - 更新anaconda和安装新包的问题

c# - 判断一个字符串中的所有字符是否相同

php - 计算 : better to truncate before insertion or let MySQL truncate?

php - 什么是函数 strtok() 在 PHP 中的使用,如何比其他字符串函数做同样的事情更好?

python - 类型错误 : unhashable type: 'numpy.ndarray' in plt. 分散

python - 如何使用 Python asyncio 限制并发?