2017-02-14 4 views
0

Tabulate 0.7.7パッケージを使用して、キーごとに2つの値を持つ辞書を表にします。キーごとに2つの値を含むPython Tabulate Dictionary

私はこのコードを持っています。

私は次の表を生成することにしたい
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)を読み取ることがありますか?彼らは必要なフォーマットを列挙しますが、あなたは現在のデータ構造をそれらの1つに変換する必要があります。 – 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 d.items()]、headers = headers)')まで行かれましたが、うまくいきませんでした。うわー! (k、)でカンマは何をするのですか? –

+0

Pythonでは、コンマはタプルを作成するので、 '(k、)'はあなたのケースでは 'v'を別のタプルに追加できる長さのタプルを作成します。 '(k)'は 'k'と同じです。これはあなたが望むものではありません。 – Psidom

1

を私は」あなたの入力データの構造が与えられていることが確かではありませんd

データをそのまま再フォーマットすると(下記参照)、目的の結果が得られます。

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

関連する問題