2010-12-13 9 views
2

I`mで結果を返しますが、辞書は次のように定義されています。反復辞書を通って、テーブルに辞書の内容を印刷するを見てテーブル

d = {"date": tuple(date),"open":tuple(open),"close":tuple(close),"min":tuple(min),"max":tuple(max),"gain":tuple(gain),"loss":tuple(loss),"avg_gain":tuple(avg_gain),"avg_loss":tuple(avg_loss)} 

は、私はそれを反復処理したいと思います最初の行にはキーと次の行、タプル(日付)、タプル(空白)などの内容が含まれます。

+0

HTMLテーブルが必要ですか? –

+0

いいえ、シェルの行と列に似ています。print '\ t'を使用しています。 –

答えて

6

結果を転記する

>>> d={"A":(1.0,2.0,3.0), "B":(4.0,5.0,6.0), "C":(7.0,8.0,9.0)} 
>>> for row in zip(*([k]+map(str,v) for k,v in sorted(d.items()))): 
... print "\t".join(row) 
... 
A  B  C 
1.0  4.0  7.0 
2.0  5.0  8.0 
3.0  6.0  9.0 
+0

ほぼですが、 "\ t" .join(行)を印刷します TypeError:シーケンスアイテム0:期待される文字列、floatが見つかりました。もし私が(str(row))に参加すれば、それはちょっとですが、フルフロートの代わりに毎回1つの数値しか得られません。 (タプルに浮きが入っていると言いましたか?) –

+0

@Julz、そこにある地図(str、v)を絞ろうとしました –

+0

代わりに試してみましたか(myFloat)? str()は、時折浮動小数点を丸める/切り取ることを含む、人間が読むことができる傾向になります。 –

2

私が誤解していない限り:

for k in d: 
    print k, '\t', 
for v in d.values(): 
    print v, '\t', 

エドそれ:おそらくより良い方法:

print '\t'.join(d) 
print '\t'.join(d.values()) 

例:

d = {'apple':'green', 'lemon':'yellow', 'cherry':'red'} 

出力約タプルの前面にキーに参加して、ZIP(*)を使用する方法

cherry lemon apple 
red  yellow green 
+0

とは思えません。最初の行は基本的にキーを繰り返して印刷します。\ t '、key1、' \ t \ t'key2など。 –

+0

このコードは、**最初の行のキーを反復します**。 Pythonのdicts **は内部的には注文されていないので、それらはあなたが期待する順序ではありません - 木ではなくハッシュで構築されています。これはgnibblerのバージョンで 'sorted()'呼び出しが必要とするものです。しかし、このコードでは、dict値がタプルであり、行ごとに分割することは期待していません。 –

+0

コメントありがとうございます。はい、私は注文の不足を認識しています。しかし、質問をもう一度読むと、文字通り、私は並べ替えられていない表示が間違っているとは考えません。しかし、タプルを分けることは正しいです。私はその質問の一部を理解していませんでした。 –