Python3如何通过字典键实现格式化输出的对齐?
问题
我熟悉Python3中的位置参数格式化方式,示例如下:
D = {'name': 'Bob', 'status': 'Fully Employed'} print("{0:<8}" "{1:>20}".format(D['name'], D['status'])) # 输出:"Bob " " Fully Employed"
我希望通过字典键来指定对应值的显示对齐方式,请问有没有简便的实现方法?
我尝试了下面的写法,但报错了:
print( "{'name':<8} {'status':>20}".format( **D ) ) # 报错信息: # Traceback (most recent call last): # File "<stdin>", line 1, in <module> # KeyError: "'name'"
解决方法
你的写法出错是因为格式字符串里给键名加了单引号,Python会把'name'当成字典的键去查找,但你的字典里实际的键是不带引号的name,自然找不到匹配项。
正确的写法是去掉键名的引号,把对齐格式直接跟在键名后面:
D = {'name': 'Bob', 'status': 'Fully Employed'} print("{name:<8} {status:>20}".format(**D))
运行后会得到你想要的对齐效果:
Bob Fully Employed
如果你的Python版本是3.6及以上,推荐用更简洁的f-string实现,可读性更强:
D = {'name': 'Bob', 'status': 'Fully Employed'} print(f"{D['name']:<8} {D['status']:>20}")
或者也可以用get()方法避免键不存在时抛出异常:
print(f"{D.get('name', ''):<8} {D.get('status', ''):>20}")
内容的提问来源于stack exchange,提问作者user1648977
相关产品推荐
相关产品推荐

