遍历字典并以表格形式返回结果

2 投票
3 回答
3425 浏览
提问于 2025-04-16 08:26

我想把一个字典的内容打印成表格,这个字典是这样定义的:

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

我想逐行遍历这个字典,在命令行中打印出来,第一行是字典的键,接下来的每一行是元组的内容,比如日期的元组、开盘价的元组等等。

3 个回答

0

你可以使用Pandas这个工具(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
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'}

输出结果:

cherry  lemon   apple
red     yellow  green
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

撰写回答