Sometimes, while working with data, we can have a problem in which we need to find the min/max of tuple elements that are received as values of dictionary. We may have a problem to get index wise min/max. Let’s discuss certain ways in which this particular problem can be solved.
Method #1 : Using tuple() + min()/max() + zip() + values() The combination of above methods can be used to perform this particular task. In this, we just zip together equi index values extracted by values() using zip(). Then find min/max value using respective function. Finally result is returned as index wise max/min values as a tuple.
Python3
# Python3 code to demonstrate working of # Max / Min of tuple dictionary values # Using tuple() + min()/max() + zip() + values() # Initializing dictionary test_dict = { 'gfg' : ( 5 , 6 , 1 ), 'is' : ( 8 , 3 , 2 ), 'best' : ( 1 , 4 , 9 )} # printing original dictionary print ("The original dictionary is : " + str (test_dict)) # Max / Min of tuple dictionary values # Using tuple() + min()/max() + zip() + values() res = tuple ( max (x) for x in zip ( * test_dict.values())) # printing result print ("The maximum values from each index is : " + str (res)) |
The original dictionary is : {'is': (8, 3, 2), 'gfg': (5, 6, 1), 'best': (1, 4, 9)} The maximum values from each index is : (8, 6, 9)
Method #2 : Using tuple() + map() + values() + * operator This is yet another way in which this task can be performed. The difference is that we use map() instead of loop and * operator for zipping the values together.
Python3
# Python3 code to demonstrate working of # Max / Min of tuple dictionary values # Using tuple() + map() + values() + * operator # Initializing dictionary test_dict = { 'gfg' : ( 5 , 6 , 1 ), 'is' : ( 8 , 3 , 2 ), 'best' : ( 1 , 4 , 9 )} # printing original dictionary print ("The original dictionary is : " + str (test_dict)) # Max / Min of tuple dictionary values # Using tuple() + map() + values() + * operator res = tuple ( map ( min , * test_dict.values())) # printing result print ("The minimum values from each index is : " + str (res)) |
The original dictionary is : {'is': (8, 3, 2), 'gfg': (5, 6, 1), 'best': (1, 4, 9)} The minimum values from each index is : (1, 3, 1)
Method #3 : Using max(),keys(),tuple() methods
Approach
- Initiate a for loop to traverse keys of dictionary
- Append the max of each tuple value to output list
- Convert the list to a tuple
- Display tuple
Python3
# Python3 code to demonstrate working of # Max / Min of tuple dictionary values # Initializing dictionary test_dict = { 'gfg' : ( 5 , 6 , 1 ), 'is' : ( 8 , 3 , 2 ), 'best' : ( 1 , 4 , 9 )} # printing original dictionary print ( "The original dictionary is : " + str (test_dict)) # Max / Min of tuple dictionary values x = list (test_dict.keys()) res = [] for i in x: res.append( max (test_dict[i])) res = tuple (res) # printing result print ( "The maximum values from each index is : " + str (res)) |
The original dictionary is : {'gfg': (5, 6, 1), 'is': (8, 3, 2), 'best': (1, 4, 9)} The maximum values from each index is : (6, 8, 9)
Time Complexity : O(N)
Auxiliary Space : O(N)
Method #4: Using list comprehension and tuple()
You can use a list comprehension to iterate over the values of each key in the dictionary and find the maximum value for each index. Then you can convert the resulting list into a tuple.
- Initialize a dictionary named test_dict with key-value pairs where the values are tuples of three integers. The keys are ‘gfg’, ‘is’, and ‘best’.
- Print the original dictionary by using the print() function and converting the dictionary to a string using the str() function.
- Create a list comprehension that iterates through each key in the test_dict dictionary.
- For each key, call the max() function on the tuple value associated with that key to find the maximum value in the tuple.
- Add each maximum value to a new list called res.
- Convert the res list to a tuple using the tuple() function.
- Print the result by using the print() function and converting the tuple to a string using the str() function. The result is the maximum value from each index of the tuples in the test_dict dictionary.
Python3
# Initializing dictionary test_dict = { 'gfg' : ( 5 , 6 , 1 ), 'is' : ( 8 , 3 , 2 ), 'best' : ( 1 , 4 , 9 )} # printing original dictionary print ( "The original dictionary is : " + str (test_dict)) # Max / Min of tuple dictionary values using Method #4 res = [ max (test_dict[key]) for key in test_dict] res = tuple (res) # printing result print ( "The maximum values from each index is : " + str (res)) |
The original dictionary is : {'gfg': (5, 6, 1), 'is': (8, 3, 2), 'best': (1, 4, 9)} The maximum values from each index is : (6, 8, 9)
Time complexity: O(nm), where n is the number of keys in the dictionary and m is the length of the tuples.
Auxiliary space: O(n), where n is the number of keys in the dictionary.