2010-12-13 144 views
2

我在找的打印字典的內容插入表中返回結果,字典的定義是這樣的:迭代通過詞典和一臺

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)} 

我想通過它來迭代通過在shell行打印行,第一行會包含鍵,下面的行,元組(日期)的內容,元組(開),等等

+0

你想要一個HTML表嗎? – 2010-12-13 05:25:20

+0

不,不,只是看起來像行和列在外殼中,使用打印'\ t'我假設 – 2010-12-13 05:27:34

回答

6

如何加入鍵到元組的前部,然後用ZIP(*)轉置結果

>>> 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:期望的字符串,找到的浮點數。如果我加入(str(row)),那麼它會做到這一點,但我每次只獲得1個數字而不是完整的浮動。 (我提到的元組中包含浮動?) – 2010-12-13 05:46:38

+0

@Julz,嘗試在那裏擠壓一個地圖(str,v) – 2010-12-13 05:47:54

+0

嘗試repr(myFloat)而不是? str()將趨向於人類可讀,有時包括舍入/裁剪長浮標。 – 2010-12-13 05:50:19

2

除非我的誤解:

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

Ed它:也許是一個更好的辦法:

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

例子:

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

輸出:

cherry lemon apple 
red  yellow green 
+0

這並不完全這樣做,我認爲第一行應該基本上迭代通過鍵和打印'\ t ',key1,'\ t \ t'key2等。 – 2010-12-13 05:34:57

+0

此代碼**不會遍歷第一行的鍵。它們只是不符合你的期望,因爲Python dicts **不是**內部排序的 - 它們是基於散列而不是樹。這就是'sort()'調用在gnibbler版本中的作用。然而,這段代碼並不期望字典值是元組並逐行分割它們。 – 2010-12-13 06:41:45

+0

感謝您的評論。是的,我知道缺乏訂購。但從字面上看,再次閱讀這個問題,我不認爲無序顯示是不正確的。但是你分裂元組是正確的。我不明白這個問題的部分內容。 – 2010-12-13 15:13:42