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不,那是个错误。接得好