如何用表模块按字母顺序分组



我正在使用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 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")

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

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

这将有效地按字母顺序"组"值。

最新更新