ann*_*nne 9 python dictionary matrix
我想制作一个矩阵,列出嵌套的词典.但是我无法找到如何制作矩阵,更不用说如何将我的价值放入其中.
我的字典看起来像:
{'1': {'3': 0, '2': 1, '5': 1, '4': 0, '6': 29},
'3': {'1': 0, '2': 0, '5': 0, '4': 1, '6': 1},
'2': {'1': 13, '3': 1, '5': 21, '4': 0, '6': 0},
'5': {'1': 39, '3': 0, '2': 1, '4': 0, '6': 14},
'4': {'1': 1, '3': 1, '2': 17, '5': 2, '6': 0},
'6': {'1': 0, '3': 43, '2': 0, '5': 0, '4': 1}}
Run Code Online (Sandbox Code Playgroud)
它应该在矩阵中排序,所以它看起来像这样:
1 2 3 4 5 6
1 - 1 0 0 1 29
2 13 - 1 0 21 0
3 0 0 - 1 0 1
4 1 17 1 - 2 0
5 39 1 0 0 - 14
6 0 0 43 1 0 -
Run Code Online (Sandbox Code Playgroud)
我只是试图了解如何制作矩阵:
table=[[for 0 in range(6)] for j in range[6]]
print table
for d1 in range(6):
for d2 in range(6):
table[d1][d2]=d1+d2+2
print table
Run Code Online (Sandbox Code Playgroud)
但我有一本字典,而不是列表.我真的迷路了.
eum*_*iro 16
import
pandas
as pd
a = pd.DataFrame({'1': {'3': 0, '2': 1, '5': 1, '4': 0, '6': 29},
'3': {'1': 0, '2': 0, '5': 0, '4': 1, '6': 1},
'2': {'1': 13, '3': 1, '5': 21, '4': 0, '6': 0},
'5': {'1': 39, '3': 0, '2': 1, '4': 0, '6': 14},
'4': {'1': 1, '3': 1, '2': 17, '5': 2, '6': 0},
'6': {'1': 0, '3': 43, '2': 0, '5': 0, '4': 1}})
Run Code Online (Sandbox Code Playgroud)
投入a
:
1 2 3 4 5 6
1 NaN 13 0 1 39 0
2 1 NaN 0 17 1 0
3 0 1 NaN 1 0 43
4 0 0 1 NaN 0 1
5 1 21 0 2 NaN 0
6 29 0 1 0 14 NaN
Run Code Online (Sandbox Code Playgroud)
然后可以打印成您的格式:
print a.to_string(na_rep='-')
Run Code Online (Sandbox Code Playgroud)
打印:
1 2 3 4 5 6
1 - 1 0 0 1 29
2 13 - 1 0 21 0
3 0 0 - 1 0 1
4 1 17 1 - 2 0
5 39 1 0 0 - 14
6 0 0 43 1 0 -
Run Code Online (Sandbox Code Playgroud)
使用str.format()
:
dic = {'1': {'3': 0, '2': 1, '5': 1, '4': 0, '6': 29},
'3': {'1': 0, '2': 0, '5': 0, '4': 1, '6': 1},
'2': {'1': 13, '3': 1, '5': 21, '4': 0, '6': 0},
'5': {'1': 39, '3': 0, '2': 1, '4': 0, '6': 14},
'4': {'1': 1, '3': 1, '2': 17, '5': 2, '6': 0},
'6': {'1': 0, '3': 43, '2': 0, '5': 0, '4': 1}}
strs = "{0:^2} {1:^2} {2:^2} {3:^2} {4:^2} {5:^2} {6:^2}"
print strs.format(" ", *sorted(dic))
for x in sorted(dic):
print strs.format(x, *(dic[x].get(y, '-') for y in sorted(dic)))
Run Code Online (Sandbox Code Playgroud)
输出:
1 2 3 4 5 6
1 - 1 0 0 1 29
2 13 - 1 0 21 0
3 0 0 - 1 0 1
4 1 17 1 - 2 0
5 39 1 0 0 - 14
6 0 0 43 1 0 -
Run Code Online (Sandbox Code Playgroud)
你也可以这样生成strs
:
strs = " ".join("{"+"{0}{1}".format(i, ":^2}") for i in range(7))
Run Code Online (Sandbox Code Playgroud)