web-dev-qa-db-ja.com

python内のcsvファイルへの辞書の読み取り/書き込み

Pythonはかなり新しく、csvファイルのドキュメントは少しわかりにくいです。

次のような辞書があります。

key1: (value1, value2)

key2: (value1, value2)

key3: (value1, value2)
....

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

また、後日、ファイルから辞書にそれらを読み込めるようにしたいと考えています。

11

問題は単純なので、ここにPandasを使用するだけの十分な利点はありませんでした。

OPにも注意してください。ファイルに値を格納してそれを読み取るだけの場合は、JSONまたはPythonのシェルフモジュールを使用してください。 CSVへのエクスポートは、Excelの可能性のあるユーザーとやり取りする必要がある場合にのみ最小限に抑える必要があります。

以下のコードは、dictをCSVに変換します

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()]) 
#You can store this CSV string variable to file as below
# with open("filename.csv", "w") as file:
    # file.write(CSV)

このコードは、リスト内包内で何が起こるかを説明します。

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

これには Pandas を強くお勧めします。

Pandas DataFrameに変換:

import pandas as pd

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

CSVファイルを作成します。

df.to_csv("data.csv")

CSVファイルをDataFrameとして読み取ります。

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

DataFrameを元の辞書形式に変換します。

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

編集:あなたがExcelで出力ファイルを使用する目標を述べたので、Pandas to_Excel() and read_Excel() 変換と変換の間にコンテンツをより適切に保存できるので便利です。また、Excelを完全にスキップして standard Python Scientific Stack を使用することもできます。

24
Martin Valgur

私はパンダを使用します、それは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)
5
Colonel Beauvel