2017-02-14 1 views
0

Я использую пакет 0.7.0.7.7 для табуляции словаря с двумя значениями на ключ.Python Tabulate Словарь, содержащий два значения на ключ

У меня этот код.

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

Если вы сглаживать словарные элементы, из (к, (v1, v2)) к (к, 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 для k, v в d.items()], headers = headers))', но это не сработало. Вау! Что делает запятая в (k,)? –

+0

В python запятая делает кортежи, поэтому '(k,)' делает кортеж длиной один, который вы можете добавить к другому кортежу, 'v' в вашем случае. '(k)' такое же, как 'k', что вы не хотите здесь. – Psidom

1

Я m не уверен, что это возможно, учитывая структуру ваших входных данных d.

Переформатирование ваших данных как таковых (см. Ниже) даст желаемый результат.

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

Смежные вопросы