2017-06-21 2 views
0

Ich habe Matrix nXn.JSON automatische Header in Python

möchte ich es auf JSON-Datei so speichern:

Probenmatrix:

12 1 
3 4 

Probe JSON:

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

I automatische Header für NXN Matrix erstellen möchten, wie gezeigt vorher und ich weiß nicht wie ich das machen soll.

+0

Wie speichern Sie Ihre Matrix im Moment? – cookiedough

+0

@OP, sind Sie sicher, dass die Werte auch Zeichenfolgen sein sollen? –

Antwort

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

Fehler erhalten: json_dict [str (i) + '-' + str (j)] = str (matrix [i] [j]) TypeError: Liste Indizes müssen ganze Zahlen oder Scheiben sein, nicht str – hila

+0

@hila Sie definierten json_dict als Liste. Es muss ein Diktat sein, um Strings als Schlüssel zu verwenden. Sie müssen die Lösung unverändert verwenden oder sie ordnungsgemäß ändern – thekenobe

0

Angenommen, Ihre Matrix ist im Speicher, durchlaufen Sie sie einfach.

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

Fehler: json_dict [str (i) + '-' + str (j)] = str (Matrix [i] [j]) TypeError: Liste Indizes müssen ganze Zahlen oder Scheiben sein, nicht str – hila

+0

@hila Nein, gerade versucht es wieder auf zufällige Daten und bekam das: '{'1-1': '-0.983531037784', '1-0': '2.29816161846', '0-0': '-1.75500730824', '0-1': ' -1.22495386805 '} '. Ich denke, Sie geben etwas anderes in Ihren Daten weiter, das Sie uns nicht gezeigt haben. –

+0

@hila, ich denke, Sie können die Loop-Variablen irgendwo wiederverwenden. Es ist wirklich schwer, nur diesen einen Fehler und nichts weiter zu machen. –