需要将嵌套的Dict放入文本文件中

时间:2009-08-03 08:25:44

标签: python file dictionary

我有一个像这样的嵌套字典

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

data1,data2,data3表示数据的类型,而不是数据本身 我需要把这个dict放到这样的文件中。

时间戳col1 / data1 Col1 / data2 col1 / data3 col2 / data1 col2 / data2 col2 / data3(依此......)

我的问题是如何确保文本在相应的列下? 也就是说我在time1 column14下放了一些文本,我又在另一个时间戳中遇到了column14。如何在文本文件中跟踪这些列的位置?

列只是数字(以字符串形式)

2 个答案:

答案 0 :(得分:3)

我会使用JSON。

在Python 2.6中它可以直接使用,在早期的Python中你必须下载并安装它。

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()

很好地工作。易于手动编辑。易于解析。

答案 1 :(得分:1)

我会这样做:

#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)