Python program to Swap Keys and Values in Dictionary
Last Updated :
17 Apr, 2023
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
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()])
print ("Original dictionary is : ")
print (old_dict)
print ()
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
old_dict = { 'A' : 67 , 'B' : 23 , 'C' : 45 , 'E' : 12 , 'F' : 69 , 'G' : 67 , 'H' : 23 }
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]
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
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
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
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
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
Python program to change values in a Dictionary
Given a dictionary in Python, the task is to write a Python program to change the value in one of the key-value pairs. This article discusses mechanisms to do this effectively. Examples: Input: {'hari': 1, 'dita': 2} Output: {'hari': 1, 'dita': 4} Input: {'hari': 1, 'dita': 2} Output: {'hari': 3, 'd
2 min read
Python program to group keys with similar values in a dictionary
Given a dictionary with values as a list. Group all the keys together with similar values. Input : test_dict = {"Gfg": [5, 6], "is": [8, 6, 9], "best": [10, 9], "for": [5, 2], "geeks": [19]} Output : [['Gfg', 'is', 'for'], ['is', 'Gfg', 'best'], ['best', 'is'], ['for', 'Gfg']] Explanation : Gfg has
2 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': 'f
3 min read
Python Print Dictionary Keys and Values
When working with dictionaries, it's essential to be able to print their keys and values for better understanding and debugging. In this article, we'll explore different methods to Print Dictionary Keys and Values. Example: Using print() Method [GFGTABS] Python my_dict = {'a': 1, 'b'
2 min read
Python - Sort Dictionary by Values and Keys
Given a dictionary, sort according to descended values, if similar values, then by keys lexicographically. Input : test_dict = {"gfg" : 1, "is" : 1, "best" : 1, "for" : 1, "geeks" : 1} Output : {"best" : 1, "is" : 1, "for" : 1, "geeks" : 1, "gfg" : 1} Explanation : All values are equal, hence lexico
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 - Add Values to Dictionary of List
A dictionary of lists allows storing grouped values under specific keys. For example, in a = {'x': [10, 20]}, the key 'x' maps to the list [10, 20]. To add values like 30 to this list, we use efficient methods to update the dictionary dynamically. Letâs look at some commonly used methods to efficien
3 min read
Python Dictionary Add Value to Existing Key
The task of adding a value to an existing key in a Python dictionary involves modifying the value associated with a key that is already present. Unlike adding new key-value pairs, this operation focuses on updating the value of an existing key, allowing us to increment, concatenate or otherwise adju
2 min read
Add a Key-Value Pair to a Nested Dictionary in Python
Dictionaries in Python are versatile data structures that allow you to store and manipulate key-value pairs. When dealing with nested dictionaries, adding a key-value pair becomes a bit more intricate. In this article, we will explore four simple methods to add a key-value pair to a nested dictionar
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}. Us
3 min read