note.nkmk.me

Pythonで辞書のキーと値を入れ替える

Date: 2018-04-13 / tags: Python, 辞書

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

スポンサーリンク

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

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

辞書内包表記と辞書のforループについては、それぞれ以下の記事を参照。

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'}
スポンサーリンク
シェア
このエントリーをはてなブックマークに追加

関連カテゴリー

関連記事