Python で辞書のキーを変更する

Najwa Riyaz 2023年10月10日
  1. Python の辞書で新しいキーを割り当てて古いキーを削除する
  2. Python で pop() 関数を使用する
  3. for ループを使用して辞書をトラバースし、Python で辞書のキーを変更する
  4. Python でまったく新しいインスタンスを再構築する
  5. Python で OrderedDict クラスを使用する
  6. Python で Pandas.DataFrame 関数を使用する
Python で辞書のキーを変更する

この記事では、Python で辞書のキーを変更するためのさまざまな方法を紹介します。

Python の辞書で新しいキーを割り当てて古いキーを削除する

Python で辞書のキーを変更するには、次の手順に従います。

  1. 古いキーに新しいキーを割り当てます。
  2. 古いキーを削除します。

これらの手順を示す以下の例を確認してください。

dict_ex[new_key] = dict_ex[old_key]
del dict_ex[old_key]

次のコードは、この方法を示しています。

dict_ex = {1: "January", 2: "Febuary", 3: "March"}
print("Old dictionary-", dict_ex)
dict_ex[2.1] = dict_ex[2]
del dict_ex[2]
print("New dictionary-", dict_ex)

ここでは、キーの値 2 が値 2.1 に置き換えられていることがわかります。更新されたキーと値のペアが辞書の最後に移動したことに注意してください。

出力:

Old dictionary- {1: 'January', 2: 'Febuary', 3: 'March'}
New dictionary- {1: 'January', 3: 'March', 2.1: 'Febuary'}

Python で pop() 関数を使用する

Python で辞書のキーを変更するには、次の手順を参照してください。

  • pop 機能を使用して古いキーをポップします。この例に従ってください。
    pop(old_key)
    
  • ポップされた古いキーに新しいキーを割り当てます。この例に従ってください。
    dict_ex[new_key] = dict_ex.pop(old_key)
    

以下の例はこれを示しています。

dict_ex = {1: "January", 2: "Febuary", 3: "March"}
print("Old dictionary-", dict_ex)
dict_ex[2.2] = dict_ex.pop(2)
print("New dictionary-", dict_ex)

出力:

Old dictionary- {1: 'January', 2: 'Febuary', 3: 'March'}
New dictionary- {1: 'January', 3: 'March', 2.2: 'Febuary'}

ここでは、キーの値 2 が値 2.2 に置き換えられていることがわかります。更新されたキーと値のペアが辞書の最後に移動したことに注意してください。

for ループを使用して辞書をトラバースし、Python で辞書のキーを変更する

このために、最初にターゲットディクショナリと新しいキー値を含む別のディクショナリを取得します。その後、for ループを使用して、最終的にすべてのキーを適宜切り替えます。

dict_ex = {1: "Jan", 2: "Feb", 3: "Mar"}
print("Old dictionary-", dict_ex)
new_key_assign = {1: 111, 2: 2, 3: 3}
print("New dictionary-")
print(dict([(new_key_assign.get(key), value) for key, value in dict_ex.items()]))

ここでは、キーの値 1 が値 111 に置き換えられていることがわかります。今回は、更新されたキーと値のペアがどのように保持されているかに注意してください。

出力:

Old dictionary- {1: 'Jan', 2: 'Feb', 3: 'Mar'}
New dictionary-
{111: 'Jan', 2: 'Feb', 3: 'Mar'}

Python でまったく新しいインスタンスを再構築する

Python 3.7 以降の辞書では、順序を保持できます。このために、次のように辞書のまったく新しいインスタンスを再構築します。

dict_ex = {"old_key": "Jan", 2: "Feb", 3: "Mar"}

{"new_key" if k == "old_key" else k: v for k, v in dict_ex.items()}

これを示す例を次に示します。

dict_ex = {1: "Jan", 2: "Feb", 3: "Mar"}

print({"one" if k == 1 else k: v for k, v in dict_ex.items()})

ここでは、キーの値 1 が値 one に置き換えられていることがわかります。今回は、更新されたキーと値のペアがどのように保持されているかに注意してください。

出力:

{'one': 'Jan', 2: 'Feb', 3: 'Mar'}

Python で OrderedDict クラスを使用する

Python 3.7 以降のディクショナリでは、ジェネレータ式とともに OrderedDict を使用して順序を保持できます。

最初に collections から OrderedDict をインポートする必要があることに注意してください。次に、OrderedDict クラスを使用します。

from collections import OrderedDict

dict_ex = {"old_key": "Jan", 2: "Feb", 3: "Mar"}
OrderedDict(("new_key" if k == 1 else k, v) for k, v in dict_ex.items())

これがあなたが従うことができる例です。

from collections import OrderedDict

dict_ex = {1: "Jan", 2: "Feb", 3: "Mar"}
OrderedDict(("one" if k == 1 else k, v) for k, v in dict_ex.items())

ここでは、キーの値 1 が値 one に置き換えられていることがわかります。今回は、更新されたキーと値のペアがどのように保持されているかに注意してください。

出力:

OrderedDict([('one', 'Jan'), (2, 'Feb'), (3, 'Mar')])

Python で Pandas.DataFrame 関数を使用する

Pandas を使用して、Python の辞書のキーを変更できます。まず、pandas ライブラリをインポートします。

次に、DataFrame ユーティリティを次のように使用します。

import pandas as pd

old_dictionary = {"old_value": "Jan", 2: "Feb", 3: "Mar"}
new_dictionary = {"new_value": "Jan", 2: "Feb", 3: "Mar"}
df = pd.DataFrame([old_dictionary, new_dictionary])

このサンプルプログラムを確認してください。

import pandas as pd

dict_ex = {1: "Jan", 2: "Feb", 3: "Mar"}
print(dict_ex)
new_dict_ex = {11: "Jan", 2: "Feb", 3: "Mar"}
df = pd.DataFrame([dict_ex, new_dict_ex])
print(new_dict_ex)

ここでは、キーの値 1 が値 11 に置き換えられていることがわかります。今回は、更新されたキーと値のペアがどのように保持されているかに注意してください。

出力:

{1: 'Jan', 2: 'Feb', 3: 'Mar'}
{11: 'Jan', 2: 'Feb', 3: 'Mar'}

関連記事 - Python Dictionary