辞書(dict)の要素操作(追加・削除・連結)
Pythonの辞書(dict)に対して、
- 要素(キー key、値 value のペア)を追加
- 任意の要素(キー key、値 value のペア)、または全要素を削除
- 別の辞書(dict)を連結・統合
の方法についてまとめています。
辞書に要素を追加する①(dic[key]=value)
辞書に要素を追加する最も一般的な方法です。
Python言語の構文
dic[key] = value
挙動ポイント
- 追加したい要素のキー key が辞書にない場合は、新たに追加
- 追加したい要素のキー key が既に存在してる場合は、値 value を更新
追加したい要素のキー key が辞書にない場合
1 2 3 4 5 6 7 8 9 |
dic = {'python': 3, 'py': 2, 'dictionary': 1} # 新しい要素 ('pyparsing', 5) を追加する dic['pyparsing'] = 5 print(dic) # {'python': 3, 'py': 2, 'dictionary': 1, 'pyparsing': 5} # |
追加したい要素のキー key が既に存在している場合
1 2 3 4 5 6 7 8 9 |
dic = {'python': 3, 'py': 2, 'dictionary': 1} # 既存の要素の値を更新 dic['python'] = 3.7 print(dic) # {'python': 3.7, 'py': 2, 'dictionary': 1} # |
辞書に要素を追加する②(setdefault())
辞書に要素を追加する場合、dic[key]=value とは別に setdefault() を使う方法があります。
既にキー key が存在していた場合の挙動が異なります。
Python言語の構文
dic.setdefault(key, value)
挙動ポイント
- 追加したい要素のキー key が辞書にない場合は、新たに追加
- 追加したい要素のキー key が既に存在してる場合は、何もしない
追加したい要素のキー key が辞書にない場合
1 2 3 4 5 6 7 8 9 |
dic = {'python': 3, 'py': 2, 'dictionary': 1} # 新しい要素の追加 dic.setdefault('pyparsing', 5) print(dic) # {'python': 3, 'py': 2, 'dictionary': 1, 'pyparsing': 5} # |
追加したい要素のキー key が既に存在している場合
1 2 3 4 5 6 7 8 9 |
dic = {'python': 3, 'py': 2, 'dictionary': 1} # 既にキーが存在する場合、何もしない dic.setdefault('python', 3.7) print(dic) # {'python': 3, 'py': 2, 'dictionary': 1} # |
ポイント
既にキー key が存在している場合は、何もしません。(更新されない)
辞書の任意の要素を削除する(pop(), popitem(), del)
Pythonの辞書から、任意の要素を削除する方法は3つあります。
pop()、popitem()、del の3つです。
Python言語の構文①
dic.pop(key, [default])
pop() の挙動ポイント
- pop(key, [default]) は、指定したキー key が辞書に存在する場合は、その要素を辞書から削除
- キー key が存在しない場合は、default が返る
- 引数 default を設定していない場合は、KeyError の例外が発生
Python言語の構文②
dic.popitem()
Python言語の構文③
del dic[key]
del の挙動ポイント
- del は、指定したキー key が辞書に存在する場合は、その要素を辞書から削除
- キー key が存在しない場合は、KeyError の例外が発生
pop(key, [default]) による削除
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
dic = {'python': 3, 'py': 2, 'dictionary': 1} # キーを指定して削除 ret = dic.pop('python') print(ret) print(dic) # キーが辞書にない場合は、default の設定値が返る ret = dic.pop('python', 'no key') print(ret) print(dic) # 3 # {'py': 2, 'dictionary': 1} # no key # {'py': 2, 'dictionary': 1} # |
popitem() による削除
1 2 3 4 5 6 7 8 9 10 11 12 |
dic = {'python': 3, 'py': 2, 'dictionary': 1} # 辞書の最後尾の要素を取り出して削除 ret = dic.popitem() print(ret) print(dic) # ('dictionary', 1) # {'py': 2, 'dictionary': 1} # |
del による削除
1 2 3 4 5 6 7 8 9 |
dic = {'python': 3, 'py': 2, 'dictionary': 1} # キーを指定して削除 del dic['python'] print(dic) # {'py': 2, 'dictionary': 1} # |
辞書の全要素を削除する(clear())
dict オブジェクトの clear() メソッドを使って、辞書の全ての項目を削除できます。
1 2 3 4 5 6 7 8 9 |
dic = {'python': 3, 'py': 2, 'dictionary': 1} # 辞書の全項目を削除 dic.clear() print(dic) # {} # |
別の辞書を連結・統合する(update())
辞書同士を連結・統合する場合は、以下のように update() メソッドを使います。
Python言語の構文
dic.update([other_dict])
update の挙動ポイント
- update() は、呼び出した元の辞書に別の辞書を連結
- 既にキー key が存在している要素は、値 value が上書きされる
1 2 3 4 5 6 7 8 9 10 |
dic1 = {'python': 3, 'py': 2, 'dictionary': 1} dic2 = {'python': 3.7, 'openpyxl': 4, 'pandas': 5} # dic1 に dic2 を連結 dic1.update(dic2) print(dic1) # {'python': 3.7, 'py': 2, 'dictionary': 1, 'openpyxl': 4, 'pandas': 5} # |
おわりに
Python における辞書(dict)にデータを追加、削除、連結についてまとめました。
- 追加:dic[key]=value、または setdefault(key, value)
- 削除:pop(key)、popitem()、del 文、または clear()
- 連結:dic.update(other_dict)
Python の辞書をイテレーティブに処理する方法は、以下を参考にどうぞ。
こちらもCHECK
-
Pythonの辞書(dict)のforループ処理と注意点
Pythonの辞書(dict)の要素をfor文でループ処理する場合は、dictオブジェクトのkeys()、values()、items()メソッドを使います。list()やtupleと組み合わせると、様々なイテレーティブ処理が可能。サンプルを交えて解説します。
続きを見る