3

csv に書き出したい辞書の辞書があります。私の辞書は次のようになります。

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

私はそれを次のように書きたいと思います:

オブジェクト1

時間 1、値 1、値 2

時間 2、値 3、値 4

object2

時間 1、値 5、値 6

時間 2、値 7、値 8

これまでのところ、次のコードを使用してキーと値のペアを 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を思い通りに書き出すことができると思います。誰か提案はありますか?

4

3 に答える 3

2

個人的には 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 ファイルとしてエクスポートすることもできます。

于 2016-11-01T22:51:57.463 に答える
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)
于 2012-11-15T22:08:19.783 に答える
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 
于 2012-11-15T22:01:31.510 に答える