如何在Python中将列表字典格式化为表格?

时间:2016-02-24 15:49:18

标签: python dictionary

dic = {'S00:D58': 1, 'M23:Q14': 1, 'S43:H52': 84, 
       'S43:H53': 2, 'S43:H50': 5, 'S43:H57': 1, 'M87:E11': 10}

我想把它打印成3个列的表格,如:

S00         D58          1    
M23         Q14          1   
S43         H52          84   
S43         H53          2   
S43         H50          5   
S43         H57          1   
M87         E11          10 

有没有一种简单的方法可以达到这个目的?

3 个答案:

答案 0 :(得分:2)

您可以使用ljust来执行此操作:

for k,v in dic.items():
    a,b = k.split(':')
    print a.ljust(30), b.ljust(30), v

将打印出来:

S00                            D58                            1
M23                            Q14                            1
S43                            H52                            84
S43                            H53                            2
S43                            H50                            5
S43                            H57                            1
M87                            E11                            10

来自doc

  

这些函数分别是左对齐,右对齐和中心a   给定宽度的字段中的字符串。它们返回一个字符串   最小宽度字符宽,通过用字符串填充字符串s来创建   字符fillchar(默认是一个空格),直到给定的宽度为止   右,左或两侧。字符串永远不会被截断。

请注意,您也可以使用format来获得相同的效果:

print '{:<30s}{:<30s}{}'.format(a, b, v)

答案 1 :(得分:1)

你也可以使用字符串格式化方法format

for k, v in dic.items():
    a, b = k.split(':')
    print '{:30s}{:30s}{}'.format(a, b, v)

答案 2 :(得分:0)

>>> dic = {'S00:D58': 1, 'M23:Q14': 1, 'S43:H52': 84, 
       'S43:H53': 2, 'S43:H50': 5, 'S43:H57': 1, 'M87:E11': 10}
>>>
>>> output = '\n'.join(['{:<10} {:<10} {:<10}'.format(*k.split(':'), dic[k]) for k in dic])
>>> print(output)
S43        H52        84        
S43        H53        2         
S00        D58        1         
S43        H57        1         
M87        E11        10        
S43        H50        5         
M23        Q14        1