Open In App

Python – Convert key-values list to flat dictionary

Sometimes, while working with Python dictionaries, we can have a problem in which we need to flatten dictionary of key-value pair pairing the equal index elements together. This can have utilities in web development and Data Science domain. Lets discuss certain way in which this task can be performed.

Convert key-values list to flat dictionary using zip() + dict()

The combination of above functions can be used to achieve the required task. In this, we perform the pairing using zip() and dict() is used to convert tuple data returned by zip() to dictionary format. 






# Python3 code to demonstrate working of
# Convert key-values list to flat dictionary
# Using dict() + zip()
from itertools import product
 
# initializing dictionary
test_dict = {'month' : [1, 2, 3],
             'name' : ['Jan', 'Feb', 'March']}
 
# printing original dictionary
print("The original dictionary is : " + str(test_dict))
 
# Convert key-values list to flat dictionary
# Using dict() + zip()
res = dict(zip(test_dict['month'], test_dict['name']))
 
# printing result
print("Flattened dictionary : " + str(res))

Output : 

The original dictionary is : {‘name’: [‘Jan’, ‘Feb’, ‘March’], ‘month’: [1, 2, 3]} Flattened dictionary : {1: ‘Jan’, 2: ‘Feb’, 3: ‘March’}



Time Complexity: O(n)
Auxiliary Space: O(n)

Convert key-values list to flat dictionary Using values() and dict() methods




# Python3 code to demonstrate working of
# Convert key-values list to flat dictionary
# initializing dictionary
test_dict = {'month' : [1, 2, 3],
            'name' : ['Jan', 'Feb', 'March']}
 
# printing original dictionary
print("The original dictionary is : " + str(test_dict))
 
# Convert key-values list to flat dictionary
x=list(test_dict.values())
a=x[0]
b=x[1]
d=dict()
for i in range(0,len(a)):
    d[a[i]]=b[i]
# printing result
print("Flattened dictionary : " + str(d))

Output
The original dictionary is : {'month': [1, 2, 3], 'name': ['Jan', 'Feb', 'March']}
Flattened dictionary : {1: 'Jan', 2: 'Feb', 3: 'March'}

The time complexity of this program is O(n), where n is the length of the longest list value in the dictionary. 

The auxiliary space complexity of this program is O(n), where n is the length of the longest list value in the dictionary. 

Convert key-values list to flat dictionary Using a dictionary comprehension

This method iterates over the indices of the ‘month’ list, and for each index i, it creates a key-value pair in the new dictionary where the key is the i-th element of the ‘month’ list, and the value is the i-th element of the ‘name’ list.




test_dict = {'month': [1, 2, 3], 'name': ['Jan', 'Feb', 'March']}
res = {test_dict['month'][i]: test_dict['name'][i] for i in range(len(test_dict['month']))}
print("Flattened dictionary:", res)

Output
Flattened dictionary: {1: 'Jan', 2: 'Feb', 3: 'March'}

Time complexity: O(N), where N is the length of the ‘month’ list.
Auxiliary space: O(N), since we are creating a new dictionary that has the same number of key-value pairs as the ‘month’ list.

Use a for loop to iterate over the keys and values and create a new dictionary by assigning each key-value pair to the new dictionary.

Step-by-step approach :

Below is the implementation of the above approach:




# Python3 code to demonstrate working of
# Convert key-values list to flat dictionary
# Using for loop
 
# initializing dictionary
test_dict = {'month' : [1, 2, 3],
             'name' : ['Jan', 'Feb', 'March']}
 
# printing original dictionary
print("The original dictionary is : " + str(test_dict))
 
# Convert key-values list to flat dictionary
# Using for loop
res = {}
for i in range(len(test_dict['month'])):
    res[test_dict['month'][i]] = test_dict['name'][i]
 
# printing result
print("Flattened dictionary : " + str(res))

Output
The original dictionary is : {'month': [1, 2, 3], 'name': ['Jan', 'Feb', 'March']}
Flattened dictionary : {1: 'Jan', 2: 'Feb', 3: 'March'}

Time complexity: O(n), where n is the number of key-value pairs in the dictionary. 
Auxiliary space: O(n), as we are creating a new dictionary to store the flattened key-value pairs.


Article Tags :