Pythonで辞書のキーと値を入れ替える | note.nkmk.me (original) (raw)

Pythonで辞書(dict型オブジェクト)のキーkeyと値valueを入れ替える(逆にする)方法を説明する。

目次

辞書内包表記とitems()メソッドでキーと値を入れ替え

リスト内包表記の辞書版である辞書内包表記、および、for文で辞書のキーと値を取得するitems()メソッドを使ってキーと値を入れ替える。

`d = {'key1': 'val1', 'key2': 'val2', 'key3': 'val3'}

d_swap = {v: k for k, v in d.items()} print(d_swap)

{'val1': 'key1', 'val2': 'key2', 'val3': 'key3'}

`

入れ替え操作を繰り返し行うのであれば関数化したほうが楽。

`def get_swap_dict(d): return {v: k for k, v in d.items()}

d_swap = get_swap_dict(d) print(d_swap)

{'val1': 'key1', 'val2': 'key2', 'val3': 'key3'}

`

共通の値を持っている場合は注意

辞書dictのキーkeyはすべて異なる値である必要があるが、値valueは同じ値を保持している可能性がある。

共通の値valueを持っている辞書オブジェクトのキーkeyと値valueを入れ替えると、共通の値valueはひとつだけがキーkeyとして残る。

これは既に存在しているキーkeyを辞書に追加するとその値valueが上書きされてしまうため。

`d_duplicate = {'key1': 'val1', 'key2': 'val1', 'key3': 'val3'}

d_duplicate_swap = get_swap_dict(d_duplicate) print(d_duplicate_swap)

{'val1': 'key2', 'val3': 'key3'}

`