我有一个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
但问题是我不知道字典的大小(它有多少个键)或子字典......
最佳答案
这是一个解决方案,它首先构建一组所有列,然后将其用作每行的模板。该解决方案的优点是您只需要在每个字典中包含所需的数据集。为了显示此示例中的输入引入了一行“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
关于python - 将字典的字典(大小未知)写为矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33915065/