2016-02-03 105 views
0

我有一個字典,其中包含不同長度的字符串鍵。 我想獲得印刷字典時以下結果:如何整齊地打印字典

'short-key'    value1 
'short-key2    value2 
... 
'little-longer-key'  valueXX 
... 
'very-very-long-keeey' valueXXXX 

到現在爲止我一直在做這樣的事情:

for key,value in dict.iteritems(): 
    print key," "*(80-len(key)),value 

問題:

  1. 我不不喜歡它。似乎並不是pythonic

  2. 80是一個隨機選擇的通常很大的數字。但有時可能會發生,關鍵是超過15分鐘,因此" "*(80-len(key))沒用

回答

1

你將不得不重複兩次,以獲得最長的密鑰的長度。列表理解可以做得更好。我個人的偏好是隻對字典的鍵然後遍歷,然後做一個查詢:

padded_width = max(len(x) for x in my_dict.iterkeys()) + 1 
for key in my_dict: 
    print(key.ljust(padded_width) + my_dict[key]) 

下面是一個發燒友版本,允許更多的控制權的填充和使用字符串格式化:

SPACE_BETWEEN_KEYS_AND_VALUES = 1 
MINIMUM_PADDING = 10 
padded_width = max(MINIMUM_PADDING, max(len(x) for x in my_dict.iterkeys()) + SPACE_BETWEEN_KEYS_AND_VALUES) 
for key in my_dict: 
    print("{key: <{width}}{value}".format(key=key, width=padded_width, value=my_dict[key])) 

我我個人比較喜歡第一個例子的字符串連接。