2009-08-03 9 views
1

ich sobenötigen eine verschachtelte Dict in eine Textdatei

d={ time1 : column1 : {data1,data2,data3} 
      column2 : {data1,data2,data3}   
      column3 : {data1,data2,data3}  #So on. 
    time2 : {column1: }  #Same as Above 
    } 

data1 eine verschachtelte dict haben zu setzen, Daten2, data3 die Art der Daten darstellen und nicht die Daten selbst ich diesen dict setzen müssen in eine Datei wie diese.

Timestamp col1/data1 Col1/Daten2 col1/data3 col2/data1 col2/Daten2 col2/data3 (so weiter ...)

Mein Problem ist, Wie stelle ich sicher, dass der Text unter der entsprechenden Spalte geht?
d. H., Ich habe einen Text in time1 column14 eingegeben und ich stoße wieder auf column14 in einem anderen Zeitstempel. Wie behalte ich den Speicherort dieser Spalten in der Textdatei?

Die Säulen sind nur Zahlen (in String-Form)

+0

Übrigens, warum müssen Sie das tun? Wenn Sie nach Möglichkeiten suchen, Python-Objekte zu speichern, können Sie sich die Pickle/cPickle-Module ansehen. – dalloliogm

+0

Nein Ich muss die Objekte nicht auf der Festplatte speichern. Einfach die Zeichenfolge (entsprechend jeder Spalte und Zeitmarke) in die Textdatei schreiben. – Goutham

Antwort

1

ich es so tun würde:

#get the row with maximum number of columns 
maxrowlen = 0 
maxrowkey = "" 
for timesid in d.keys(): 
    if len(timesid.keys()) > maxrowlen: 
     maxrowlen = len(timesid.keys()) 
     maxrowkey = timesid 
maxrowcols = sorted(d[maxrowkey].keys()) 

# prepare the writing 
cell_format = "%10r" # or whatever suits your data 

# create the output string 
lines = [] 
for timesid in d.keys(): # go through all times 
    line = "" 
    for col in maxrowcols: # go through the standard columns 
     colstr = "" 
     if col in d[timesid].keys(): # create an entry for each standard column 
      colstr += cell_format % d[timesid][col] # either from actual data 
     else: 
      colstr += cell_format % ""      # or blanks 
     line += colstr 
    lines.append(line) 

text = "\n".join(lines) 
+0

Danke. So ziemlich, was ich brauchte. – Goutham

3

Ich würde verwenden JSON.

In Python 2.6 ist es direkt verfügbar, in früheren Pythons müssen Sie es herunterladen und installieren.

try: 
    import json 
exception ImportError: 
    import simplejson as json 

out= open("myFile.json", "w") 
json.dump({ 'timestamp': time.time(), 'data': d }, indent=2) 
out.close() 

Funktioniert gut. Einfach manuell zu bearbeiten. Leicht zu analysieren.