python - 将字典的字典(大小未知)写为矩阵

标签 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

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

最佳答案

这是一个解决方案,它首先构建一组所有列,然后将其用作每行的模板。该解决方案的优点是您只需要在每个字典中包含所需的数据集。为了显示此示例中的输入引入了一行“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/

相关文章:

python - 字典 - 缩小一个值并打印属于它的键 - Python

Python 将排序的字典转换为列表?

python - 为什么 python dict 更新出奇地慢?

java - 遗传算法 - 我需要什么数据结构?

python - 将 Django FileField 的内容上传到远程服务器

python - 安装requirements.txt中选定的软件包

如果找到数字序列,Python 拆分列表

python - 如何使用 python+beautifulsoup 抓取标签之外的项目

java - 通过用户对象从 Hashmap 获取值

python - 有方向约束的旅行推销员