【4 weeks challenge – Python】Day 18 DictReaderから多層化した辞書型変数を作成する

daily_trial

こんにちは、しらすです。

18日目です。本日の習得スキルは「DictReaderから多層化した辞書型変数を作成する」です!

DictReaderから多層化した辞書型変数を作成するでできること

DictReaderを使ってCSVから読み込むと一行目をkeyとして辞書が生成される。この場合、2行目以降複数行にわたってデータが記載されている(下図のエクセルのような)場合、各行一行ずつしか読み込めないため、for文での読み出しが必要になる。また、特定の人の情報を知りたい(ex.「JasonのPostを知りたい」)場合、読み込み時はkeyが name, post, telになっているためそのような利用ができない

今回のスキルを用いることで特定の列をkeyとして各情報にアクセス可能な多層化された辞書を生成することができます。

使い方

#DictReaderから多層化した辞書型変数を作成する
dict_ = {}                                          #辞書を初期化(これが忘れやすいので注意)

with open('./day18_csv/sample.csv') as csv_file:
    input1 = csv.DictReader(csv_file)

    for row in input1:
        dict_[row['name']] ={}                      #辞書内の辞書を初期化(これが忘れやすいので注意)
        dict_[row['name']]['post'] = row['post']    #keyとvalueを追加
        dict_[row['name']]['tel']  = row['tel']     #keyとvalueを追加

結果

多層化された辞書(dict_)を作成することができました。

参照は以下のように行います。

参考

pythonの二次元辞書を宣言・初期化する - Qiita
動作環境Windows10PyCharmpython3.7やりたいことpythonの辞書型を二次元で初期化したい。コードdef main(): dic = {"a": 0, "b": …

コメント