需要一點幫助或至少指出正確的方向。我正在撰寫應該以漂亮的格式列印字典內容的小函式。
這是代碼示例:
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]]
我嘗試使用理解串列,但不知何故我正在努力合并它。任何反饋表示贊賞。
uj5u.com熱心網友回復:
您可以*在串列中使用解包。
>>> a = [3, 4, 5]
>>> b = [1, 2, *a]
>>> b
[1, 2, 3, 4, 5]
對于您的情況,這將是 add_row([k, *v])
uj5u.com熱心網友回復:
感謝您提出的一個很好的問題,如果人們能更多地思考 Pythonian,世界將會變得更美好。我認為下面的代碼段會起作用:
v.extend(['']*(30-len(v)))
將其插入到您的for-loop 中。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/384580.html
上一篇:Javascript如何實作n維以非遞回方式removeOne
下一篇:將限制計數變數限制為固定值
