gpt4 book ai didi

python - Python 中的 Namedtuple 格式化/ pretty-print

转载 作者:太空宇宙 更新时间:2023-11-03 13:38:03 28 4
gpt4 key购买 nike

打印 namedtuple 时遇到问题:

Info = namedtuple('Info', ['type', 'value', 'x', 'y'])

以便值对齐并在它们之间留有空格(填充),例如:

Info( type='AAA',    value=80000,   x=16.4,   y=164.2 )
Info( type='A', value=78, x=1.5, y=11.3 )
Info( type='ABBCD', value=554, x=11.7, y=10.1 )
Info( type='AFFG', value=1263, x=121.3, y=12.8 )

理想情况下,没有逗号。我尝试了 pprint 并尝试使用 _asdict 进行打印,但没有像建议的那样成功 here .与 format 相同,我无法使其与命名元组一起运行。有任何想法或示例代码吗?

最佳答案

这是我为命名元组实现的 pretty-print :

def prettyprint_namedtuple(namedtuple,field_spaces):
assert len(field_spaces) == len(namedtuple._fields)
string = "{0.__name__}( ".format(type(namedtuple))
for f_n,f_v,f_s in zip(namedtuple._fields,namedtuple,field_spaces):
string+= "{f_n}={f_v!r:<{f_s}}".format(f_n=f_n,f_v=f_v,f_s=f_s)
return string+")"

给出我相信你正在寻找的输出:

a = Info( type='AAA',    value=80000,   x=16.4,   y=164.2 )
b = Info( type='A', value=78, x=1.5, y=11.3 )
c = Info( type='ABBCD', value=554, x=11.7, y=10.1 )
d = Info( type='AFFG', value=1263, x=121.3, y=12.8 )

tups = [a,b,c,d]

for t in tups:
print(prettyprint_namedtuple(t,(10, 9, 8, 6)))

输出:

Info( type='AAA'     value=80000    x=16.4    y=164.2 )
Info( type='A' value=78 x=1.5 y=11.3 )
Info( type='ABBCD' value=554 x=11.7 y=10.1 )
Info( type='AFFG' value=1263 x=121.3 y=12.8 )

关于python - Python 中的 Namedtuple 格式化/ pretty-print ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36518961/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com