`tabulate` 按键对列进行排序

lon*_*ony 5 python python-2.7

我想以不同的列顺序打印列表输出。我使用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')
Run Code Online (Sandbox Code Playgroud)

输出 - IS:

A     B   C
----- --- -----
Hello You False
Salue Tu  False
Run Code Online (Sandbox Code Playgroud)

输出 - 想要:

C     A     B
----- ----- ---
False Hello You
False Salue Tu
Run Code Online (Sandbox Code Playgroud)

sty*_*ane 2

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

>>> 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
Run Code Online (Sandbox Code Playgroud)

  • 是的,您可以使用“OrderedDict(sorted(your_dict.items(), key=<Optional>))” (2认同)