我正在尝试将我的路由表变成一个漂亮的打印表,但是格式有麻烦。我在下面包含了我的代码。
所以我想要这个:
╒══════╤══════╤══════╤══════╤══════╕
│ 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('-------------------------')
答案 0 :(得分:1)
我觉得这在某种程度上是作弊的,因为您(尚未)在第一栏中提到如何填充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
--------------------------------------------------