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
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 - 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 - 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 - Sort Dictionary key and values List
Sometimes, while working with Python dictionaries, we can have a problem in which we need to perform the sorting of it, wrt keys, but also can have a variation in which we need to perform a sort on its values list as well. Let's discuss certain way in which this task can be performed. Input : test_d
6 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
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
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
Python | Ways to change keys in dictionary
Given a dictionary, the task is to change the key based on the requirement. Let's see different methods we can do this task in Python. Example: initial dictionary: {'nikhil': 1, 'manjeet': 10, 'Amit': 15} final dictionary: {'nikhil': 1, 'manjeet': 10, 'Suraj': 15} c: Amit name changed to Suraj.Metho
3 min read
Python - Assign values to initialized dictionary keys
Sometimes, while working with python dictionaries, we can have a problem in which we need to initialize dictionary keys with values. We save a mesh of keys to be initialized. This usually happens during web development while working with JSON data. Lets discuss certain ways in which this task can be
5 min read