2017-02-14 63 views
0

我使用Tabulate 0.7.7包为每个键有两个值的字典制表。每个键包含两个值的Python制表词典

我有这段代码。

from tabulate import tabulate 

d = {"Dave":("13", "Male") , "Sarah":("16", "Female")} 

headers = ["Name", "Age", "Gender"] 
print(tabulate(d.items(), headers = headers)) 

我想制作下表 -

Name Age Gender 
------ ----- --------- 
Dave 13  Male 
Sarah 16  Female 

但是,代码如下表 -

Name Age 
------ ---------------- 
Dave ('13', 'Male') 
Sarah ('16', 'Female') 

我怎样才能解决这个问题?

+0

你读过[的文档(https://bitbucket.org/astanin/python-tabulate)?他们列出了所需的格式,您需要将当前的数据结构转换为其中的一种。 – jonrsharpe

回答

2

如果拼合字典项目,从(K,(V1,V2))(K,V1,V2),就可以得到正确的格式:

from tabulate import tabulate ​ 
d = {"Dave":("13", "Male") , "Sarah":("16", "Female")} 
​ 
headers = ["Name", "Age", "Gender"] 
print(tabulate([(k,) + v for k,v in d.items()], headers = headers)) 

Name  Age Gender 
------ ----- -------- 
Sarah  16 Female 
Dave  13 Male 
+0

我似乎没有想到!早些时候,我设法得到了尽可能多的print(tabulate([(k)+ v for k,v in d.items()],headers = headers))'但这不起作用。哇! (k,)中的逗号是做什么的? –

+0

在Python中,逗号会生成元组,因此'(k,)'可以创建一个长度为1的元组,您可以将其添加到另一个元组中,在您的情况下可以添加到v。 '(k)'与'k'相同,这不是你想要的。 – Psidom

1

我m不确定是否有可能鉴于输入数据的结构d

重新格式化您的数据(如下所示)将提供所需的结果。

d = {'Name': ['Dave', 'Sarah'], 'Age': [13, 16], 'Gender': ['Male', 'Female']