2017-02-14 2 views
1

Я использую Tabulate version 0.7.7 для Python 3.6Python Tabulate не дает правильную таблицу из словаря

Это мой код до сих пор для простого теста с помощью словаря.

from tabulate import tabulate 

d = {"Dave":"13", "Bob":"15"} 

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

В результате я хочу

Name Age 
------ ----- 
Dave 13 
Bob  15 

Но то, что я получаю

Name Age 
------ ----- 
1  1 
3  5 

Может кто-то мне помочь, пожалуйста?

Один вопрос - могу ли я исправить это с помощью табулята или я должен использовать другой пакет python?

ответ

3

Вы можете получить доступ к атрибуту dict. Как это. Это даст вам результат, который вы хотите.

>>> print(tabulate(d.items(), headers = headers)) 
Name  Age 
------ ----- 
Bob  15 
Dave  13 
+0

Fantastic! Огромное спасибо! –

1

Вам необходимо указать в таблице список кортежей. Один из способов сделать это с помощью словаря является использование распаковать вещи, как так:

from tabulate import tabulate 

d = {"Dave":"13", "Bob":"15"} 

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

который возвращает

Name  Age 
------ ----- 
Dave  13 
Bob  15 

В качестве альтернативы, вы можете использовать различные списки и пронестись их вместе. Tabulate ищет входы, которые выглядят следующим образом:

names = ['Dave','Bob'] 
ages = ['13','15'] 

d = zip(names,ages) 

print(d) 

, которая возвращает:

[('Dave', '13'), ('Bob', '15')] 
+0

Фантастический! Огромное спасибо! Я также буду использовать другое решение в своем развитии! –

+0

Нет проблем. Второй метод должен помочь иметь произвольное количество столбцов. Счастливое программирование! – tmwilson26