在矩阵python中打印嵌套字典

2024-10-01 09:40:44 发布

您现在位置:Python中文网/ 问答频道 /正文

正在寻找将嵌套字典打印为矩阵的方法:

输入

nestedD ={'h1': {r1: float1, r2: float2, r3: float3}, 'h2': {r1: float4, r2: float5, r3: float6}, 'h3': {r1: float7, r2: float8, r3: float9}}
Output
|    |    h1    |    h2    |    h3   |
| -- | -------- | -------- | ------- |
| r1 | float1   | float4   | float7  |
| r2 | float2   | float5   | float8  |
| r3 | float3   | float6   | float9  |

enter image description here

到目前为止,我有:

for h, innerD in nestedD.items():
            print (h)
            for r in innerD:
                print("{: >10} {: >10} {: >10}".format(*innerD[r]))
                

TypeError:*后面的format()参数必须是iterable,而不是float

如何使用format()遍历内部字典的浮动


Tags: format字典h2h1r2r3r1float2
1条回答
网友
1楼 · 发布于 2024-10-01 09:40:44
for h, innerD in nestedD.items():
            print (h)
            print("{: >10} {: >10} {: >10}".format(*innerD.values()))

因此,出现错误的原因是innerD[r]解析为地址nestedD[h][r]处的数字。星号将您可以迭代的内容(如列表)作为参数列表传递给函数。 因为您有3个格式参数,所以应该用3个参数传递格式。在上面更新的代码中,这三个参数来自内部字典的值

再读一遍你的问题,似乎仍然不是你想要的。似乎你想先在字典上做一种轮换。上述答案将错误地排列值

print("|__| {} | {} | {} |".format(*nestedD.keys()))
headers = nestedD.keys()
# There is an assumption here that all the inner dictionaries have the same keys
rows = nestedD.values[0].keys() 
rotatedD = dict([(row,dict([(header, nestedD[header][row]) for header in headers])) for row in rows])
for key, values in rotatedD:
    str_values = "|".join(["{: >10}".format(v) for v in values])
    print("|{key}|{values}|".format(key=key, values=str_values))

相关问题 更多 >