お困りの方へ
辞書はキー(key)と値(value)のペアの集合です。
コードではコロンで結び付け、key: valueとなります。
この記事は、辞書型(dictionary)の説明をします。
大きなデータの場合はDataFrameが便利ですが、ちょっとしたデータは辞書型が適しています。
辞書の仕様書です。
辞書型の作成
辞書の作り方はいろいろありますが、キーと値を波括弧{}で囲むのが直感的です。
d = {'aaa': 1, 'bbb': 2, 'ccc': 3} print(d) print(type(d)) # {'aaa': 1, 'bbb': 2, 'ccc': 3} # <class 'dict'> # シンプルな辞書の作り方。 d = dict([('aaa', 1), ('bbb', 2), ('ccc', 3)]) print(d) # {'aaa': 1, 'bbb': 2, 'ccc': 3} # dict()にタプルのリストを渡して作る。 d = dict(aaa=1, bbb=2, ccc=3) print(d) # {'aaa': 1, 'bbb': 2, 'ccc': 3} d = {} print(d) # {} # 空の辞書を作れる。
キーは文字列である必要はありません。
数字を使ってキーを通し番号のように使えます。
d = {1: 'aaa', 2: 'bbb', 3: 'ccc'} print(d) # {1: 'aaa', 2: 'bbb', 3: 'ccc'} # キーは文字でなくてもいい。
辞書の変更
値の更新
値を更新する方法です。
d = {'aaa': 1, 'bbb': 2, 'ccc': 3} print(d) # {'aaa': 1, 'bbb': 2, 'ccc': 3} d['aaa'] = 4 print(d) # {'aaa': 4, 'bbb': 2, 'ccc': 3} d.update({'bbb': 5}) print(d) # {'aaa': 4, 'bbb': 5, 'ccc': 3} d.update(ccc=6) print(d) # {'aaa': 4, 'bbb': 5, 'ccc': 6}
キーの追加
新たなキーを追加する方法です。
d = {'aaa': 1, 'bbb': 2, 'ccc': 3} print(d) # {'aaa': 1, 'bbb': 2, 'ccc': 3} d['ddd'] = 4 print(d) # {'aaa': 1, 'bbb': 2, 'ccc': 3, 'ddd': 4} d.update({'eee': 5}) print(d) # {'aaa': 1, 'bbb': 2, 'ccc': 3, 'ddd': 4, 'eee': 5} d.update(fff=6) print(d) # {'aaa': 1, 'bbb': 2, 'ccc': 3, 'ddd': 4, 'eee': 5, 'fff': 6} d.update({'ggg': None}) print(d) # {'aaa': 1, 'bbb': 2, 'ccc': 3, 'ddd': 4, 'eee': 5, 'fff': 6, 'ggg': None} # 値をNoneにすることもできる。
キーの削除
辞書のキーを削除する方法です。ペアとなる値も削除されます。
d = {'aaa': 1, 'bbb': 2, 'ccc': 3} print(d) # {'aaa': 1, 'bbb': 2, 'ccc': 3} del d['ccc'] print(d) # {'aaa': 1, 'bbb': 2}
辞書の表示
json.dumpsを使えば、辞書が見やすくなります。
import json d = {'aaa': 1, 'bbb': 2, 'ccc': 3} print(d) # {'aaa': 1, 'bbb': 2, 'ccc': 3} print(json.dumps(d, indent=4)) # { # "aaa": 1, # "bbb": 2, # "ccc": 3 # }
json.dumpsで日本語を表示したい場合は、ensure_ascii=Falseを付けましょう。
d = {'あああ': 1, 'いいい': 2} print(d) # {'あああ': 1, 'いいい': 2} print(json.dumps(d, indent=4)) # { # "\u3042\u3042\u3042": 1, # "\u3044\u3044\u3044": 2 # } # json.dumpsだと日本語は表示されない。 print(json.dumps(d, indent=4, ensure_ascii=False)) # { # "あああ": 1, # "いいい": 2 # } # json.dumpsで日本語を表示するには、ensure_ascii=Falseにする。
キー、値の表示
辞書全体でなく、キーや値を表示できます。
print(d.keys()) print(list(d.keys())) # dict_keys(['aaa', 'bbb', 'ccc']) # ['aaa', 'bbb', 'ccc'] print(d.values()) print(list(d.values())) # dict_values([1, 2, 3]) # [1, 2, 3] print(d.items()) # dict_items([('aaa', 1), ('bbb', 2), ('ccc', 3)]) for k, v in d.items(): print(f'key:{k} value:{v}') # key:aaa value:1 # key:bbb value:2 # key:ccc value:3
辞書の出力
辞書を見やすい形でファイル出力したいときは、json.dumpを使いましょう。
ファイル出力の場合は、dumpsではなくdumpです。
日本語がある場合は、ensure_ascii=Falseを付けましょう。
d = {'aaa': 1, 'bbb': 2, 'ccc': 3} file_path = os.path.join(os.getcwd(), 'dict.txt') f = open(file_path, mode='w') json.dump(d, f, indent=4) f.close() d = {'あああ': 1, 'いいい': 2, 'ううう': 3} file_path = os.path.join(os.getcwd(), 'dict_jp.txt') f = open(file_path, mode='w') json.dump(d, f, indent=4, ensure_ascii=False) f.close()