2017-06-21 15 views
0

我有矩阵nXn。python中的JSON自动头文件

我希望将其保存在JSON文件这样的:

样品基质:

12 1 
3 4 

样品JSON:

{'1-1': '12','1-2': '1','2-1': '3','2-2':'4'} 

我想创建为NxN矩阵自动标题等所示之前和我不知道如何做到这一点。

+0

你是如何存储你的矩阵的那一刻? – cookiedough

+0

@OP,你确定你想要的值也是字符串吗? –

回答

1
import json 
import collections 

data = [ [ 12,1], [3,4] ] 
dataDict = collections.OrderedDict() 

for i in range(0, len(data)): 
    for j in range(0, len(data[0])): 
     key = str(i+1) + '-' + str(j+1) 
     dataDict[key] = data[i][j] 

dataJson = json.dumps(dataDict) 
print dataJson 
+0

出错:json_dict [str(i)+' - '+ str(j)] = str(matrix [i] [j]) TypeError:列表索引必须是整数或切片,而不是str – hila

+0

@hila您定义了json_dict作为一个列表。它必须是字符串作为键的字典。您必须按原样使用解决方案或正确修改它 – thekenobe

0

假设你的矩阵在内存中,只是循环它。

import json 
json_dict = {} 
for i, arr in enumerate(matrix): 
    for j, element in enumerate(arr): 
     json_dict[str(i) + '-' + str(j)] = str(element) 

json.dump(json_dict, open('matrix.txt', 'w')) 
+0

错误:json_dict [str(i)+' - '+ str(j)] = str(matrix [i] [j]) TypeError:列表索引必须是整数或切片,而不是str – hila

+0

@hila Nope,它再次随机数据并得到这个:'{'1-1':'-0.983531037784','1-0':'2.29816161846','0-0':'-1.75500730824','0-1':' -1.22495386805' }'。我认为你传递的是你的数据中没有显示给我们的信息。 –

+0

@hila,我想你可能会在某处重用循环变量。真的很难只通过这一个错误,没有别的。 –