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

时间:2017-04-27 12:17:07

标签: python python-2.6

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

我目前有这个:

+-------------------------------+
|   Task  |  Status  |  Rating  |
|---------+---------------------+
|    A    |  Done    |   Good   |
|    B    |  Done    |   Bad    |
|    C    |  Pending |          |
|    D    |  Done    |   Good   |
+---------+----------+----------+

我想谈谈这个:

+-------------------------------+
|   Task  |  Status  |  Rating  |
|---------+---------------------+
|    A    |  Done    |   Good   |
|    B    |  Done    |   Bad    |
|    D    |  Done    |   Good   |
|    C    |  Pending |          |
+---------+----------+----------+

以便将所有Done组合在一起。

目前,制表会收到一个字典,我解压缩这样的值:

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")

1 个答案:

答案 0 :(得分:2)

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

sorted(table, key=lambda status: status[1])

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