2015-12-15 13 views
5

Pythonにはまったく新しく、csvファイルのドキュメントはちょっと混乱します。Pythonでcsvファイルに辞書を読み書きする

は、私は次のような辞書を持っている:

キー1:(値1、値2)

KEY2:(値1、値2)

KEY3:(値1、値2) .. ..

それぞれの行にキーが含まれ、2つの値が続く形式でCSVファイルに書き出したいと思います。

また、後でファイルから辞書に戻ってそれらを読み込むこともできます。

+1

このhttps://docs.python.org/3/tutorial/を読んで、自分で解決してください。問題がある場合はこちらに来て、具体的な質問をしてください。 –

+2

なぜCSVですか?保存して読み込みたい場合は、 'pickle'や' json'のようなものを見ることができます。どちらも非常に堅牢なダンプとロードメソッドを持ち、 'json'はユーザーが読めるようになっています。 –

+0

私はいくつかの計算を行うためにこれらの値をExcelで使用します。しかし、複数のファイルにまたがって使用されるので、私は連続した合計を保つことができます。 – SlightlyCultured

答えて

4

私は比較的単純な問題のために、ここでパンダを使用するのに十分な理由を見つけることができません。値をファイルに保存して、CSVの代わりにJSONを読み込む場合は、OPにも注意してください。 CSVへのエクスポートは、他の人(潜在的にExcelユーザー)との対話に役立ちます。ここで

は、私はこのコードは、リストcomrpehensionの内側に何が起こるかを説明し

value1 = 'one' 
value2 = 'two' 
d = { 
     'key1': (value1, value2), 
     'key2': (value1, value2), 
     'key3': (value1, value2) 
    } 
CSV ="\n".join([k+','+",".join(v) for k,v in d.items()]) 
print CSV #You can store this string variable to file as you wish 
# with open("filename.csv", "w") as file: 
    # file.write(CSV) 

CSV

に保管する方法です。

CSV = "" 
for k,v in d.items(): 
    line = "{},{}\n".format(k, ",".join(v)) 
    CSV+=line 
print CSV 
+0

これは私が理解できるもののように見えます。だから、 "for k、v.d.items()"と書かれたところで、vパラメータ(値のラベルを仮定)は2つの値(タプル)があることを自動的に認識しますか? つまり、この印刷キーvalue1、value2は使用されますか? – SlightlyCultured

+0

はい、タプルに対して 'v'が仮定されます。' "、"。join "は、それらのタプルvarialbesをコンマで結合することを意味します。私はfor-loopを使ってリストの理解を精緻化しました。より簡単で読みやすくなることを願っています。 – nehemiah

6

この場合、Pandasを強くお勧めします。

パンダDATAFRAMEに変換:

df.to_csv("data.csv") 

CSVを読むDATAFRAMEとしてバックファイル:

df = pd.read_csv("data.csv", index_col=0) 

に戻ってデータフレームに変換

import pandas as pd 

d = { 
    'a': (1, 101), 
    'b': (2, 202), 
    'c': (3, 303) 
} 
df = pd.DataFrame.from_dict(d, orient="index") 

CSVファイルを作成します。元の辞書形式:

d = df.to_dict("split") 
d = dict(zip(d["index"], d["data"])) 

EDIT:ファイル名をPandas関数に直接渡すことができることを教えてくれたColonel Beauvelに感謝します。

EDIT2:Excelで出力ファイルを使用するという目標が言われているので、Pandas to_excel()read_excel()は、コンバージョンの間にコンテンツをよりよく保存するので、より便利です。 また、Excelをスキップしてstandard Python scientific stackを使用することもできます。

+2

パンダを使う良い方法はto_csvです。オープンコマンドの必要性、cf私の答え。 –

+0

厄介な音を鳴らしたくないのですが、裸のpythonを使うだけでどのようにするのか誰にも分かりますか? Pythonの初心者として他のパッケージを使用したくはありません。 – SlightlyCultured

+0

あなたが依存関係の点で最小限のものを探しているなら、itsneoの答えはおそらくあなたが目指しているものです。 –

3

私はパンダを使用することになり、それが1行で行うことができます

import pandas as pd 

dic = {'key1':['v1','v2'], 'key2':['vv','gg']} 

pd.DataFrame(dic).T.reset_index().to_csv('myfile.csv', header=False, index=False) 
関連する問題