迭代通过词典和一台
我在找的打印字典的内容插入表中返回结果,字典的定义是这样的:迭代通过词典和一台
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行打印行,第一行会包含键,下面的行,元组(日期)的内容,元组(开),等等
如何加入键到元组的前部,然后用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
差不多,但我打印“\ t”.join(行) TypeError:序列项目0:期望的字符串,找到的浮点数。如果我加入(str(row)),那么它会做到这一点,但我每次只获得1个数字而不是完整的浮动。 (我提到的元组中包含浮动?) – 2010-12-13 05:46:38
@Julz,尝试在那里挤压一个地图(str,v) – 2010-12-13 05:47:54
尝试repr(myFloat)而不是? str()将趋向于人类可读,有时包括舍入/裁剪长浮标。 – 2010-12-13 05:50:19
除非我的误解:
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
这并不完全这样做,我认为第一行应该基本上迭代通过键和打印'\ t ',key1,'\ t \ t'key2等。 – 2010-12-13 05:34:57
此代码**不会遍历第一行的键。它们只是不符合你的期望,因为Python dicts **不是**内部排序的 - 它们是基于散列而不是树。这就是'sort()'调用在gnibbler版本中的作用。然而,这段代码并不期望字典值是元组并逐行分割它们。 – 2010-12-13 06:41:45
感谢您的评论。是的,我知道缺乏订购。但从字面上看,再次阅读这个问题,我不认为无序显示是不正确的。但是你分裂元组是正确的。我不明白这个问题的部分内容。 – 2010-12-13 15:13:42
您可以使用Pa ndas(http://pandas.pydata.org/pandas-docs/stable/dsintro.html),只要元组长度相同,你可以这样做:
>>> import pandas
>>> d={"Green":(1,2,3,4), "Blue":(12,13,14,15), "Red":(1,3,5,7)}
>>> pandas.DataFrame(d)
Blue Green Red
0 12 1 1
1 13 2 3
2 14 3 5
3 15 4 7
你想要一个HTML表吗? – 2010-12-13 05:25:20
不,不,只是看起来像行和列在外壳中,使用打印'\ t'我假设 – 2010-12-13 05:27:34