Pythonのdict

PythonのdictはPerlやRubyでいうハッシュタイプです。その主な使い方についてのメモ書きです


初期化

初期化は様々な方法がありますが、{key: value, ...}の形が最も使用頻度が高いでしょうか。下記の例にあるようにkeyに異なる複数の型を使用することができます。またこの際d[2]d[2.0]のように数字として==が成立するものは同一keyとして扱われます。 (ただし環境によって浮動小数点等号比較は結果が異なることがあるため、あまりあてにしない方がいいでしょう)

d = {'ichi': 1, 2:'ni', 'san':3}

print(d)
print(f'd["ichi"] = {d["ichi"]}')
print(f'd[2]      = {d[2]     }')
print(f'd[2.0]    = {d[2.0]   }')
# 実行結果
{'ichi': 1, 2: 'ni', 'san': 3}
d["ichi"] = 1
d[2]      = ni
d[2.0]    = ni

要素の追加

存在しないkeyに値を代入すると要素が追加されます。ただしd[key1][key2] =とした場合に、key1が存在しない場合はKeyError例外が投げられます

d = {}
d['ichi'] = 1       # OK 'ichi'要素を追加
d['ni']['san'] = 1  # d['ni']が存在しないのでNG

削除

del d[key]で削除します。また、d.clear()で全要素を削除します

del d['ichi']   # d['ichi']を削除
d.clear()       # 全要素削除

要素のテスト

要素のテストはkey in d または key not in d

if key in d:
  ...  # keyが存在するときの処理

if key not in d:
  ...  # keyが存在しないときの処理

ループ処理

d.keys()で全keyの要素を、d.values()で全値を、d.items()keyvalueのペアを処理できます

for key in d.keys():
    ...

for value in d.values():
    ...

for key, value in d.items():
    ...

要素の一括更新

d.update()で複数要素の追加・更新ができます。update()には他のdict型の変数、[(key, value), ...]のtupleのリストの他キーワード引数を指定すると、キーワードを文字列キーとして扱ってくれます

d = {'ichi': 1}
d2 = {'ni': 2, 'san':3}

d.update(d2)                       # 他のdict型
d.update([('yon', 4), ('go', 5)])  # tupleのリスト
d.update(roku=6, nana=7)           # キーワード引数
print(d)
# 実行結果
{'ichi': 1, 'ni': 2, 'san': 3, 'yon': 4, 'go': 5, 'roku': 6, 'nana': 7}

キーと要素の交換

リスト内包表記を使うとキーと要素を交換したdict型が作成できます

d = {'ichi': 1, 'ni':2, 'san':3}
d_swap = {val:key for key, val in d.items()}  # keyとvalueをスワップ

おすすめ