Python program to Swap Keys and Values in Dictionary
Last Updated :
11 Jul, 2025
Dictionary is quite a useful data structure in programming that is usually used to hash a particular key with value so that they can be retrieved efficiently. Let’s discuss various ways of swapping the keys and values in Python Dictionary.
Method#1 (Does not work when there are multiple same values): One naive solution maybe something like just swapping the key and values respectively.
Example:
Input : {'A': 67, 'B': 23, 'C': 45, 'D': 56, 'E': 12, 'F': 69, 'G': 67, 'H': 23}
Output: {67: 'G', 69: 'F', 23: 'H', 56: 'D', 12: 'E', 45: 'C'}
Python3
# Python3 code to demonstrate
# swap of key and value
# initializing dictionary
old_dict = {'A': 67, 'B': 23, 'C': 45, 'D': 56, 'E': 12, 'F': 69, 'G': 67, 'H': 23}
new_dict = dict([(value, key) for key, value in old_dict.items()])
# Printing original dictionary
print ("Original dictionary is : ")
print(old_dict)
print()
# Printing new dictionary after swapping keys and values
print ("Dictionary after swapping is : ")
print("keys: values")
for i in new_dict:
print(i, " : ", new_dict[i])
Output
Original dictionary is :
{'D': 56, 'E': 12, 'C': 45, 'A': 67, 'F': 69, 'H': 23, 'B': 23, 'G': 67}
Dictionary after swapping is :
keys: values
67 : G
69 : F
23 : B
56 : D
12 : E
45 : C
But there is a problem with this approach. In our example, we have multiple keys with the same values i.e. ('A', 67) and ('G', 67) and the other keys having the same values are ('B', 23) and ('H', 23). But in the result, we obtained only one key from each. i.e we obtained only ('G', 67) and ('B', 23). So, here's another approach to deal with this problem:
Method#2 (Handles multiple same values): In this approach, we will check if the value is already present or not. If present then just append it to the list.
Example:
Input : {'A': 67, 'B': 23, 'C': 45, 'E': 12, 'F': 69, 'G': 67, 'H': 23}
Output: {45: ['C'], 67: ['A', 'G'], 12: ['E'], 69: ['F'], 23: ['B', 'H']}
Python3
# Python3 code to demonstrate
# swap of key and value
# initializing dictionary
old_dict = {'A': 67, 'B': 23, 'C': 45, 'E': 12, 'F': 69, 'G': 67, 'H': 23}
# Printing original dictionary
print ("Original dictionary is : ")
print(old_dict)
print()
new_dict = {}
for key, value in old_dict.items():
if value in new_dict:
new_dict[value].append(key)
else:
new_dict[value]=[key]
# Printing new dictionary after swapping
# keys and values
print ("Dictionary after swapping is : ")
print("keys: values")
for i in new_dict:
print(i, " :", new_dict[i])
Output
Original dictionary is :
{'F': 69, 'G': 67, 'H': 23, 'A': 67, 'C': 45, 'B': 23, 'E': 12}
Dictionary after swapping is :
keys: values
45 : ['C']
67 : ['G', 'A']
12 : ['E']
69 : ['F']
23 : ['H', 'B']
Method 3: Using List Comprehension and Set
Python3
# Python code to swap key and value
# of dictionary using list comprehension
# and Set
dict1 = {"a": 1, "b": 2, "c": 3, "d": 2}
dict2 = {}
dict2 = dict([(v, [k for k, v1 in dict1.items() if v1 == v])
for v in set(dict1.values())])
print(dict2)
Output{1: ['a'], 2: ['b', 'd'], 3: ['c']}
Time Complexity: O(n)
Auxiliary Space: O(n)
Method 4: Using get() Method
Python3
# Python code to swap key and value
# of dictionary using Get() Method
dict1 = {"a": 1, "b": 2, "c": 3, "d": 2}
dict2 = {}
for k, v in dict1.items():
dict2[v] = dict2.get(v, []) + [k]
print(dict2)
Output{1: ['a'], 2: ['b', 'd'], 3: ['c']}
Time complexity: O(n), where n is the number of key-value pairs in the dictionary.
Auxiliary space: O(n), where n is the number of key-value pairs in the dictionary.
Method 5: Using Dictionary SetDefault() Method
Python3
# Python code to swap key and value
# of dictionary using Dictionary
# Setdefault() Method
dict1 = {"a": 1, "b": 2, "c": 3, "d": 2}
dict2 = {}
for i in dict1:
dict2.setdefault(dict1[i], []).append(i)
print(dict2)
Output{1: ['a'], 2: ['b', 'd'], 3: ['c']}
Method 6: Using DefaultDict
Python3
# Python code to swap key and value
# of dictionary using defaultdict
from collections import defaultdict
dict1 = {"a": 1, "b": 2, "c": 3, "d": 2}
dict2 = defaultdict(list)
{dict2[v].append(k) for k, v in dict1.items()}
print(dict(dict2))
Output{1: ['a'], 2: ['b', 'd'], 3: ['c']}
Time complexity: The time complexity of the given program is O(n), where n is the number of items in the dictionary. .
Auxiliary space: The auxiliary space used by the program is O(n), where n is the number of items in the dictionary.
Similar Reads
Add a key value pair to Dictionary in Python The task of adding a key-value pair to a dictionary in Python involves inserting new pairs or updating existing ones. This operation allows us to expand the dictionary by adding new entries or modify the value of an existing key.For example, starting with dictionary d = {'key1': 'geeks', 'key2': 'fo
3 min read
Add a key value pair to Dictionary in Python The task of adding a key-value pair to a dictionary in Python involves inserting new pairs or updating existing ones. This operation allows us to expand the dictionary by adding new entries or modify the value of an existing key.For example, starting with dictionary d = {'key1': 'geeks', 'key2': 'fo
3 min read
Python - Swap ith and jth key's value in dictionary Given a dictionary, perform swapping of ith and jth index key's value. Input : test_dict = {"Gfg": 2, "is": 4, "best": 7, "for": 9, "geeks": 10}, i, j = 1, 4 Output : {'Gfg': 2, 'is': 10, 'best': 7, 'for': 9, 'geeks': 4} Explanation : Values of "is" and "geeks" swapped.Input : test_dict = {"Gfg": 2,
6 min read
Python - Mapping Key Values to Dictionary We are given two list and we need to map key to values of another list so that it becomes dictionary. For example, we are given two list k = ['a', 'b', 'c'] and v = [1, 2, 3] we need to map the keys of list k to the values of list v so that the resultant output should be {'a': 1, 'b': 2, 'c': 3}.Usi
3 min read
Python - Mapping Key Values to Dictionary We are given two list and we need to map key to values of another list so that it becomes dictionary. For example, we are given two list k = ['a', 'b', 'c'] and v = [1, 2, 3] we need to map the keys of list k to the values of list v so that the resultant output should be {'a': 1, 'b': 2, 'c': 3}.Usi
3 min read
Iterate Through Dictionary Keys And Values In Python In Python, a Dictionary is a data structure where the data will be in the form of key and value pairs. So, to work with dictionaries we need to know how we can iterate through the keys and values. In this article, we will explore different approaches to iterate through keys and values in a Dictionar
2 min read