Python 如何使用制表模块按字母顺序对列进行分组?

Python 如何使用制表模块按字母顺序对列进行分组?,python,python-2.6,Python,Python 2.6,我正在使用制表模块在控制台上很好地打印信息。我正在使用python 2.6 我目前有: +-------------------------------+ |任务|状态|评级| |---------+---------------------+ |好的| |B |完成|不好| |C |待定|| |好的| +---------+----------+----------+ 我想说的是: +-------------------------------+ |任务|状态|评级| |---------

我正在使用
制表
模块在控制台上很好地打印信息。我正在使用python 2.6

我目前有:

+-------------------------------+
|任务|状态|评级|
|---------+---------------------+
|好的|
|B |完成|不好|
|C |待定||
|好的|
+---------+----------+----------+
我想说的是:

+-------------------------------+
|任务|状态|评级|
|---------+---------------------+
|好的|
|B |完成|不好|
|好的|
|C |待定||
+---------+----------+----------+
这样所有的
Done
s被分组在一起

目前表格接收到一个字典,我按如下方式解压值:

def generate_table(data):
    table = []
    headers = ['Task', 'Status', 'Rating']

    for key, value in data.iteritems():
        print key, value

        if 'Rating' in value:
            m, l = value['Status'], value['Rating']
            m = m.split('/')[-1]
            temp = [key,m,l]
            table.append(temp)
        else:
            m, l = value['Status'], None
            m = m.split('/')[-1]
            temp = [key,m,l]
            table.append(temp)

    print tabulate(table, headers, tablefmt="psql")

您可以在for循环后按状态列对结果表进行排序:

已排序(表,键=lambda状态:状态[1])


这将有效地按字母顺序“分组”值。

您可以在for循环后按状态列对结果表进行排序:

已排序(表,键=lambda状态:状态[1])


这将有效地按字母顺序“分组”值。

在您的示例中,所需的输出将挂起的任务从C交换到D。这是有意的吗?如果使用
值,则可以肯定地避免
if
else
。get('Rating',None)
,它会在按键时指定默认值(
None
)(
“评级”
在这种情况下)不是字典的一部分。对于其余的,只有当你回应时,你才能回答@languitar@languitar不,这是一个错误。很好,在您的示例中,所需的输出将挂起的任务从C交换到D。这是故意的吗?如果使用
值,您肯定可以避免
if
else
。get('Rating',None)
,当键(
'Rating'
在本例中)不是字典的一部分时,它会指定一个默认值(
在本例中为None
)。对于其余的,只有在您对@languitar@languitar不,那是个错误。接得好