我有一个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
但问题是我不知道字典的大小(它有多少个键)或子字典......
答案 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