3

キーがタプルで、値が次のようなリストである辞書があります

{('c4:7d:4f:53:24:be', 'ac:81:12:62:91:df'): [5.998999999999998,0.0013169999,   
4.0000000000000972], ('a8:5b:4f:2e:fe:09', 'de:62:ef:4e:21:de'): [7.89899999,  
0.15647999999675390, 8.764380000972, 9.200000000]}  

この辞書を次のような列形式で csv ファイルに書き込みたい:

('c4:7d:4f:53:24:be', 'ac:81:12:62:91:df')    ('a8:5b:4f:2e:fe:09', 'de:62:ef:4e:21:de')  
             5.998999999999998                      7.89899999  
             0.0013169999                           0.15647999999675390
             4.0000000000000972                     8.764380000972   
                                                    9.200000000 

コードを使用して行形式で書くことと同じことを知っています:

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

列に同じことを書くにはどうすればよいですか? それは可能ですか?事前に感謝します。ここで csv の python ドキュメントを参照しました: http://docs.python.org/2/library/csv.html。列ごとの書き込みに関する情報はありません。

4

2 に答える 2

2
import csv

mydict = {('c4:7d:4f:53:24:be', 'ac:81:12:62:91:df'):
          [5.998999999999998, 0.0013169999, 4.0000000000000972],
          ('a8:5b:4f:2e:fe:09', 'de:62:ef:4e:21:de'):
          [7.89899999, 0.15647999999675390, 8.764380000972, 9.200000000]}

with open('dict.csv', 'wb') as file:
    writer = csv.writer(file, delimiter='\t')
    writer.writerow(mydict.keys())
    for row in zip(*mydict.values()):
        writer.writerow(list(row))

出力ファイル dict.csv:

('c4:7d:4f:53:24:be', 'ac:81:12:62:91:df')  ('a8:5b:4f:2e:fe:09', 'de:62:ef:4e:21:de')
5.998999999999998   7.89899999
0.0013169999    0.1564799999967539
4.000000000000097   8.764380000972
于 2013-07-19T01:37:24.960 に答える
1

フォーマットを理解できると確信しています:

>>> d.keys() #gives list of keys for first row
[('c4:7d:4f:53:24:be', 'ac:81:12:62:91:df'), ('a8:5b:4f:2e:fe:09', 'de:62:ef:4e:21:de')]
>>> for i in zip(*d.values()):  #gives rows with tuple structure for columns
        print i
(5.998999999999998, 7.89899999)
(0.0013169999, 0.1564799999967539)
(4.000000000000097, 8.764380000972)

コードでは、次のようにします。

writer = csv.writer(open('dict.csv', 'wb'))
writer.writerow(mydict.keys())  
for values in zip(*mydict.values()):
    writer.writerow(values)

() などは csv ファイルに追加されません。

于 2013-07-18T22:49:08.573 に答える