在python中写一个字典到csv

时间:2012-11-15 21:52:26

标签: python csv dictionary

我有一本字典词典,我想写给csv。我的字典看起来像:

dict={
    object1:
        {
            time1:[value1,value2],
            time2:[value3,value4]
        },
    object2:
        {
            time1:[value5,value6],time2[value7,value8]
        }
    }

我希望它写为:

object1

time1,value1,value2

time2,value3,value4

Object2的

time1,value5,value6

time2,value7,value8

到目前为止,我只能弄清楚如何使用以下代码写出csv中的键/值对:

writer = csv.writer(open('test.csv','wb'))
for key, value in Dict.items():
    writer.writerow([key,value])

所以看起来像:

objcet1,{
    time1:[value1,value2],time2:[value3,value4]
}

objcet2,{
    time1:[value5,value6],time2:[value7,value8]
}

我尝试使用

只写外键(标记为object1和object2的键)
writer = csv.writer(open('test.csv','wb'))
for key, value in Dict.key():
    writer.writerow([key])

但它只是写出一个空白文件。我想如果我能弄清楚如何自己编写外键,我就可以按照自己的意愿写出csv。有没有人有任何建议?

3 个答案:

答案 0 :(得分:1)

您的预期输出格式看起来非常令人惊讶,看起来不像是一种合理的csv格式。

然而,这将导致您正在寻找的确切内容:

>>> mydict = {'object1':{'time1':['value1','value2'],'time 2':['value3','value4']},'object2':{'time1':['value5','value6'],'time2':['value7','value8']}}

>>> print "\n".join(["%s %s " % (k, " ".join([", ".join([k1]+v1) for (k1,v1) in v.iteritems()])) for (k,v) in mydict.iteritems()])

object1 time1, value1, value2 time2, value3, value4 
object2 time1, value5, value6 time2, value7, value8 

答案 1 :(得分:1)

试试这个:

import csv

writer = csv.writer(open('test.csv','wb'))
d={'object1':{'time1':['value1','value2'],'time2':['value3','value4']},
   'object2':{'time1':['value5','value6'],'time2':['value7','value8']}}
for key, value in d.iteritems():
    ln = [key]
    for ik, iv in value.iteritems():
        ln.append(ik)
        ln.extend([v for v in iv])
    writer.writerow(ln)

答案 2 :(得分:1)

我个人建议使用Excel,我一直在研究.csv文件,但最终使用.xlsx。

import xlsxwriter
workbook = xlsxwriter.Workbook('File.xlsx')
worksheet = workbook.add_worksheet()                            
row = 0
col = 0
for key in dictionary.keys():
    row += 1
    worksheet.write(row, col, key)
    for item in dictionary[key]:
        worksheet.write(row, col + 1, item)
        worksheet.write(row, col + 2, dictionary[key][item][0])
        row += 1

workbook.close()

在那里你可以改变列和行的增量,以便你得到你想要的excel表。 您甚至可以从Excel中将其作为.csv文件导出。