【发布时间】:2022-01-19 12:22:01
【问题描述】:
需要一点帮助或至少指出正确的方向。 我正在编写一个小函数,它应该以漂亮的格式打印 dict 的内容。
这里是代码示例:
head = ["HOSTNAME", "OS", "PROTOCOL"]
data = {
'server1': ['ESXi', 'FC'],
'server2': ['ESXi', 'FC'],
'server3': ['ESXi', 'FC'],
}
def printify_table(header, data, align='c'):
x = PrettyTable()
x.field_names = header
x.align = align
for k, v in data.items():
x.add_row([k, v[0], v[1]])
print(x)
printify_table(head, data)
结果: python x.py
+----------+------+----------+
| HOSTNAME | OS | PROTOCOL |
+----------+------+----------+
| server1 | ESXi | FC |
| server2 | ESXi | FC |
| server3 | ESXi | FC |
+----------+------+----------+
现在这很好用,因为我有静态 dict 值。 没问题!
问题|问题: 现在,如果我面对每个键的不同数量的值,调整代码的 pythonic 方法是什么?
如果我遇到这样的事情?
data = {
'server1': ['ESXi'],
'server2': ['ESXi', 'FC'],
'server3': ['ESXi', 'FC','iSCI],
}
你是如何调整下线的?
x.add_row([k, v[0], v[1]]
我尝试使用理解列表,但不知何故我很难将其合并。 任何反馈表示赞赏。
【问题讨论】:
-
根据您使用的python版本,您可以使用
[k, *v],但是对于固定数量的标题,这将如何工作? -
感谢 Holloway,它的 python 3.8 和 *v 正在解决我的(第一个)问题。如此简单但非常有效。再次感谢。是的,标题问题将是下一个:)。
标签: python loops dictionary prettytable