2016-03-18 46 views
2

我想以不同的列顺序打印我的列表输出。我使用tabulate,但可以使用其他工具。字符串有不同的长度,问题的一部分是“自动”定义列长度,这个列表非常好!`tabulate`按键排列的列

代码:

parameter_list = [] 
parameter_list.append({ 
    'A': "Hello", 
    'B': "You", 
    'C': False 
}) 
parameter_list.append({ 
    'A': "Salue", 
    'B': "Tu", 
    'C': False 
}) 

print tabulate(parameter_list, headers='keys') 

输出 - IS:

A  B C 
----- --- ----- 
Hello You False 
Salue Tu False 

输出 - 旺旺:

C  A  B 
----- ----- --- 
False Hello You 
False Salue Tu 

回答

1

的原因是因为你是dict是无序的。您可以使用collections模块中的OrderedDict

>>> from collections import OrderedDict 
>>> from tabulate import tabulate 
>>> parameter_list = [] 
>>> parameter_list.append(OrderedDict([('C', False), ('A', 'Hello'), ('B', 'you')])) 
>>> parameter_list.append(OrderedDict([('C', False), ('A', 'Salue'), ('B', 'Tu')])) 
>>> print tabulate(parameter_list, headers='keys') 
    C A  B 
--- ----- --- 
    0 Hello you 
    0 Salue Tu 
+0

我还可以使用OrderDict命令我现有的字典吗? – lony

+2

是的,你可以使用'OrderedDict(sorted(your_dict.items(),key = ))' – styvane