1. ホーム
  2. python

[解決済み] キー:値」ごとに1行でcsvファイルに辞書を書き込む

2022-09-26 19:43:16

質問

辞書を持っています。

mydict = {key1: value_a, key2: value_b, key3: value_c}

このようなスタイルで、dict.csvというファイルにデータを書き出したいのですが。

key1: value_a
key2: value_b
key3: value_c

と書きました。

import csv
f = open('dict.csv','wb')
w = csv.DictWriter(f,mydict.keys())
w.writerow(mydict)
f.close()

しかし、今は1つの行にすべてのキー、次の行にすべての値を持っています....

このようになんとかファイルを書き込んだら、また新しい辞書に読み返したいのですが。

私のコードを説明すると、辞書にはtextctrlとcheckbox(wxpythonを使用)の値とboolsが含まれています。私は、"Save settings" と "Load settings" ボタンを追加したいのです。 Save settingsは、前述の方法でファイルに辞書を書き込み(ユーザーがcsvファイルを直接編集するのを容易にするため)、load settingsはファイルから読み込んでtextctrlsとcheckboxesを更新する必要があります。

どのように解決するのですか?

この DictWriter は期待通りに動作しません。

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

読み返すには

with open('dict.csv') as csv_file:
    reader = csv.reader(csv_file)
    mydict = dict(reader)

は非常にコンパクトですが、読み込む際に型変換をする必要がないことを前提としています。