Many times while working with Python dictionaries, due to advent of OOP Paradigm, Modularity is focussed in different facets of programming. Hence there can be many use cases in which we require to pass a dictionary as argument to a function. But this required the unpacking of dictionary keys as arguments and it’s values as argument values. Let’s discuss a method in which this can be performed.
Method : Using ** ( splat ) operator This operator is used to unpack a dictionary, and while passing in a function this can possibly unpack a dictionary and achieve the required task of mapping the keys to arguments and it’s values to argument values.
Python3
# Python3 code to demonstrate working of # Passing dictionary as keyword arguments # Using ** ( splat ) operator # Helper function to demo this task def test_func(a = 4 , b = 5 ): print ("The value of a is : " + str (a)) print ("The value of b is : " + str (b)) # initializing dictionary test_dict = { 'a' : 1 , 'b' : 2 } # printing original dictionary print ("The original dictionary is : " + str (test_dict)) # Testing with default values print ("The default function call yields : ") test_func() print ("\r") # Passing dictionary as keyword arguments # Using ** ( splat ) operator print ("The function values with splat operator unpacking : ") test_func( * * test_dict) |
Time Complexity: O(1)
Space Complexity: O(n) -> n = number of key-value pairs
The original dictionary is : {'a': 1, 'b': 2} The default function call yields : The value of a is : 4 The value of b is : 5 The function values with splat operator unpacking : The value of a is : 1 The value of b is : 2
Method 2 : Single argument to the function and then unpack it inside the function
step-by-step approach
Define a function test_func that takes a single argument arg_dict.
Inside the function, use the get() method of dictionaries to retrieve the values of a and b from the arg_dict dictionary. If the keys a or b are not present in the dictionary, use default values of 4 and 5, respectively.
Print the values of a and b.
Define a dictionary test_dict with keys a and b and corresponding values.
Print the original dictionary test_dict.
Call the function test_func with an empty dictionary as an argument to test with default values.
Print a newline character for better readability.
Call the function test_func with the test_dict dictionary as an argument and unpack the dictionary inside the function.
Python3
# Python3 code to demonstrate working of # Passing dictionary as single argument and unpacking inside function # Helper function to demo this task def test_func(arg_dict): a = arg_dict.get( 'a' , 4 ) b = arg_dict.get( 'b' , 5 ) print ( "The value of a is: " + str (a)) print ( "The value of b is: " + str (b)) # initializing dictionary test_dict = { 'a' : 1 , 'b' : 2 } # printing original dictionary print ( "The original dictionary is: " + str (test_dict)) # Testing with default values print ( "The default function call yields:" ) test_func({}) print ( "\r" ) # Passing dictionary as single argument and unpacking inside function print ( "The function values with dictionary unpacking:" ) test_func(test_dict) |
The original dictionary is: {'a': 1, 'b': 2} The default function call yields: The value of a is: 4 The value of b is: 5 The function values with dictionary unpacking: The value of a is: 1 The value of b is: 2
Time complexity: O(1) as the dictionary is unpacked inside the function and does not require any additional time.
Auxiliary space: O(1) as we are not creating any new data structures, but only retrieving values from the existing dictionary.