写一本字典词典(大小未知)作为矩阵

时间:2015-11-25 11:14:11

标签: python dictionary

我有一个python字典,例如:

 my_dict = {100: {0.5: 1, 0.6: 0}, 200: {0.5: 1, 0.6: 1}}

即,它是一本字典词典。

我想将其打印为矩阵,如下所示:

     0.5, 0.6
100  1    0
200  1    1

我想用这样的东西: Python - Printing a dictionary as a horizontal table with headers

但问题是我不知道字典的大小(它有多少个键)或子字典......

2 个答案:

答案 0 :(得分:2)

这是一个解决方案,首先构建一组所有列,然后将其用作每行的模板。此解决方案的优点是您只需要在每个字典中包含所需的数据集。要显示此示例中的输入引入了一行" 300"一个交叉列和一个新列。

OrderedDict是一个用于排序列的小助手。如果你不喜欢依赖,你也可以循环。

from collections import OrderedDict

my_dict = {
100: {0.5: 1, 0.6: 0         },
200: {0.5: 1, 0.6: 1         },
300: {0.5: 5,         0.7: 6}}

# header columns
cols = set()
for d in my_dict.values():
    cols.update(d.keys())
cols = list(sorted(cols))
print "\t", "\t".join([str(c) for c in cols])

# data rows
for row, d_cols in sorted(my_dict.items()):
    e_cols = OrderedDict().fromkeys(cols)
    e_cols.update(d_cols)
    print row, "\t", "\t".join([str(v) for v in e_cols.values()])

结果:

python test.py 

        0.5     0.6     0.7
100     1       0       None
200     1       1       None
300     5       None    6

答案 1 :(得分:1)

您可以使用pandas

import pandas as pd

my_dict = {100: {0.5: 1, 0.6: 0}, 200: {0.5: 1, 0.6: 1}}

df = pd.DataFrame(my_dict)

print df

     100 200
0.5  1   1
0.6  0   1


print df.T

     0.5, 0.6
100  1    0
200  1    1