2017-03-25 11 views
0
keys = ['key1', 'key2', 'key3', 'key4'] 
list1 = ['a1', 'b3', 'c4', 'd2', 'h0', 'k1', 'p2', 'o3'] 
list2 = ['1', '2', '25', '23', '4', '5', '6', '210', '8', '02', '92', '320'] 


abc = dict(zip(keys[:4], [list1,list2])) 

with open('myfilecsvs.csv', 'wb') as f: 
    [f.write('{0},{1}\n'.format(key, value)) for key, value in abc.items()] 

第1列のすべてのキーは、この値と他の列の値をそれぞれ取得しています。最初の列ではなくcsvの最初の行に辞書のキーを置く方法は?

私が達成しようとしているのは、最初の行のすべてのキーと最初の行の特定の列の各キーと、次にそれらの値です。転置

のようなものは、私はあなたのあなたがこれを行うにはjoinzip_longestを使用することができ、この

+0

指定されたサンプル入力に対して予想される出力を追加してください。 –

答えて

0

に支援するための非常に感謝したwillbe。

",".join(abc.keys())

key1,key2ような(キー)最初の行を返し、その後、文字列に,\nを追加するのと同じ方法を集約elements.And使用する(Python2.xがizip_longestを使用)zip_longestを使用します。

zip_longest

各iterableの要素をまとめるイテレータを作成します。 イテラブルの長さが不揃いである場合、欠損値はfillvalueを伴う で埋められます。

from itertools import zip_longest 

with open('myfilecsvs.csv', 'w') as f: 
    f.write("\n".join([",".join(abc.keys()),*(",".join(i) for i in zip_longest(*abc.values(),fillvalue=''))])) 

出力:

key1,key2 
a1,1 
b3,2 
... 
,02 
,92 
,320 
関連する問題