Python – Convert key-value String to dictionary
Sometimes, while working with Python strings, we can have problems in which we need to convert a string’s key-value pairs to the dictionary. This can have applications in which we are working with string data that needs to be converted. Let’s discuss certain ways in which this task can be performed.
Method #1 : Using map() + split() + loop
The combination of above functionalities can be used to perform this task. In this, we perform the conversion of key-value pairs to the dictionary using a map, and splitting key-value pairs is done using split().
Python3
# Python3 code to demonstrate working of # Convert key-value String to dictionary # Using map() + split() + loop # initializing string test_str = 'gfg:1, is:2, best:3' # printing original string print ( "The original string is : " + str (test_str)) # Convert key-value String to dictionary # Using map() + split() + loop res = [] for sub in test_str.split( ', ' ): if ':' in sub: res.append( map ( str .strip, sub.split( ':' , 1 ))) res = dict (res) # printing result print ( "The converted dictionary is : " + str (res)) |
The original string is : gfg:1, is:2, best:3 The converted dictionary is : {'gfg': '1', 'is': '2', 'best': '3'}
Time complexity: O(n), where n is the length of the input string.
Auxiliary space: O(n), where n is the length of the input string.
Method #2 : Using dict() + generator expression + split() + map()
This is yet another way in which this problem can be solved. In this, we perform the task in a similar way as above but in 1 liner way using dict() and generator expression.
Python3
# Python3 code to demonstrate working of # Convert key-value String to dictionary # Using dict() + generator expression + split() + map() # initializing string test_str = 'gfg:1, is:2, best:3' # printing original string print ( "The original string is : " + str (test_str)) # Convert key-value String to dictionary # Using dict() + generator expression + split() + map() res = dict ( map ( str .strip, sub.split( ':' , 1 )) for sub in test_str.split( ', ' ) if ':' in sub) # printing result print ( "The converted dictionary is : " + str (res)) |
The original string is : gfg:1, is:2, best:3 The converted dictionary is : {'gfg': '1', 'is': '2', 'best': '3'}
The Time and Space Complexity for all the methods are the same:
Time Complexity: O(n)
Auxiliary Space: O(n)
Method #3: Using dict comprehension + split()
This is yet another way in which this problem can be solved. In this, we perform the task in a similar way as above but in 1 liner way using dict comprehension and split().
Python
# Python3 code to demonstrate working of # Convert key-value String to dictionary # Using dict comprehension + split() # initializing string test_str = 'gfg:1, is:2, best:3' # printing original string print ( "The original string is : " + str (test_str)) # Convert key-value String to dictionary # Using map() + split() + loop res = test_str.split( ', ' ) res = {i.split( ':' )[ 0 ]: i.split( ':' )[ 1 ] for i in res} # printing result print ( "The converted dictionary is : " + str (res)) |
The original string is : gfg:1, is:2, best:3 The converted dictionary is : {'is': '2', 'gfg': '1', 'best': '3'}
Please Login to comment...