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'}
`