Change the Key in a Dictionary in Python

Change the Key in a Dictionary in Python

Najwa Riyaz Nov-26, 2021 Jul-01, 2021 Python Python Dictionary
  1. Assign New Key and Delete the Old Key in a Dictionary in Python
  2. Use the pop() Function in Python
  3. Traverse Through the Dictionary Using a for Loop and Change the Key in a Dictionary in Python
  4. Rebuild an Entirely New Instance in Python
  5. Use the OrderedDict Class in Python
  6. Use the Pandas.DataFrame Function in Python

This article introduces various methods to change the key in a dictionary in Python.

Assign New Key and Delete the Old Key in a Dictionary in Python

To change the key in a dictionary in Python, follow these steps.

  1. Assign a new key to the old key.
  2. Delete the old key.

Check the example below, which demonstrates these steps.

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

The following code illustrates this method.

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)

Here, we see that the key’s value 2 is replaced by the value 2.1. Please note how the updated key-value pair has moved to the end of the dictionary.

Output:

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

Use the pop() Function in Python

To change the key in a dictionary in Python, refer to the following steps.

  • Pop the old key using the pop function. Follow this example.
    pop(old_key)
    
  • Assign a new key to the popped old key. Follow this example.
    dict_ex[new_key] = dict_ex.pop(old_key)
    

The example below illustrates this.

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)

Output:

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

Here, we see that the key’s value 2 is replaced by the value 2.2. Please note how the updated key-value pair has moved to the end of the dictionary.

Traverse Through the Dictionary Using a for Loop and Change the Key in a Dictionary in Python

For this, you first take the target dictionary and another dictionary containing the new key value. After that, you eventually switch all the keys accordingly using a for loop.

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()]))

Here, we see that the key’s value 1 is replaced by the value 111. Please note how the updated key-value pair has been retained this time.

Output:

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

Rebuild an Entirely New Instance in Python

In the Python 3.7+ dictionary, you can preserve the ordering. For this, rebuild an entirely new instance of the dictionary as follows.

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()}

Here is an example that demonstrates this.

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

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

Here, we see that the key’s value 1 is replaced by the value one. Please note how the updated key-value pair has been retained this time.

Output:

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

Use the OrderedDict Class in Python

In the Python 3.7+ dictionary, you can preserve the ordering by using the OrderedDict along with a generator expression.

Note that you first need to import OrderedDict from collections. Then, use the OrderedDict class.

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())

Here’s an example you can follow.

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())

Here, we see that the key’s value 1 is replaced by the value one. Please note how the updated key-value pair has been retained this time.

Output:

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

Use the Pandas.DataFrame Function in Python

You can use Pandas to change a key in a dictionary in Python. Firstly, import the pandas library.

Then, use the DataFrame utility as follows.

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>])

Check this example program.

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)

Here, we see that the key’s value 1 is replaced by the value 11. Please note how the updated key-value pair has been retained this time.

Output:

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

Related Article - Python Dictionary

  • Check if a Key Exists in a Dictionary in Python
  • Convert a Dictionary to a List in Python
  • Get All the Files of a Directory
  • Find Maximum Value in Python Dictionary
  • Delete a File and Directory in Python
  • Sort a Python Dictionary by Value