如何解决打印键,值对作为二维表
我正在尝试将我的路由表变成一个漂亮的打印表,但是格式有麻烦。我在下面包含了我的代码。
所以我想要这个:
╒══════╤══════╤══════╤══════╤══════╕
│ RA │ H1 │ H2 │ RA │ RB │
╞══════╪══════╪══════╪══════╪══════╡
│ RA │ 1 │ 4 │ 0 │ 1 │
├──────┼──────┼──────┼──────┼──────┤
│ RB │ 2 │ 3 │ 1 │ 0 │
╘══════╧══════╧══════╧══════╧══════╛
但是我明白了:(附带说明,只要有完整的列/行行,只要以表格格式显示就没有关系)
RA H1 H2 RA RB
-------------------------
H1 : {1: 4}
RA : {0: 1}
H2 : {4: 3}
RB : {1: 0}
-------------------------
self.rt_tbl_D = {'H1': {1: 4},'RA': {0: 1},'H2': {4:3},'RB': {1:0}} # {destination: {router: cost}}
我的打印代码是这样:
print("{:<10} {:<10} {:<10} {:<10} {:<10}".format('RA','H1','H2','RA','RB'))
print('-------------------------')
for key,value in self.rt_tbl_D.items():
print(key + ' : ',value)
print('-------------------------')
解决方法
我觉得这在某种程度上是作弊的,因为您(尚未)在第一栏中提到如何填充RA或RB,但是它向您展示了如何使用理解来生成列表,然后使用* operator将它们解压缩到打印语句中。
rt_tbl_D = {'H1': {1: 4},'RA': {0: 1},'H2': {4:3},'RB': {1:0}} # {destination: {router: cost}}
keylist = ['RA','H1','H2','RA','RB']
print("{:<10} {:<10} {:<10} {:<10} {:<10}".format(*keylist))
print('--------------------------------------------------')
print("RA {:<10} {:<10} {:<10} {:<10}".format(*[k for key in keylist[1:] for k in rt_tbl_D[key].keys()]))
print("RB {:<10} {:<10} {:<10} {:<10}".format(*[k for key in keylist[1:] for k in rt_tbl_D[key].values()]))
print('--------------------------------------------------')
输出:
RA H1 H2 RA RB
--------------------------------------------------
RA 1 4 0 1
RB 4 3 1 0
--------------------------------------------------
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。