Python - Tuple value product in dictionary

Dictionaries in Python are widely used to store data in key-value pairs. Sometimes we need to calculate the product of elements at corresponding positions across tuple values in a dictionary. This commonly arises in data manipulation and analysis scenarios.

Problem Statement

Given a dictionary with tuples as values, we want to multiply elements at the same index positions across all tuples.

Input

input_dict = {'a': (1, 3, 5, 7), 'b': (2, 4, 6, 8), 'c': (2, 3, 5, 7)}
print("Input:", input_dict)
Input: {'a': (1, 3, 5, 7), 'b': (2, 4, 6, 8), 'c': (2, 3, 5, 7)}

Expected Output

# Index 0: 1 * 2 * 2 = 4
# Index 1: 3 * 4 * 3 = 36  
# Index 2: 5 * 6 * 5 = 150
# Index 3: 7 * 8 * 7 = 392
print("Expected Output: (4, 36, 150, 392)")
Expected Output: (4, 36, 150, 392)

Method 1: Using zip() and Custom Product Function

This method unpacks dictionary values and uses zip() to group elements at the same index positions ?

def calculate_product(elements):
    result = 1
    for item in elements:
        result *= item
    return result

# Create dictionary with tuples as values
input_dict = {'a': (1, 3, 5, 7), 'b': (2, 4, 6, 8), 'c': (2, 3, 5, 7)}

print("Input Dictionary:", input_dict)

# Calculate product of elements at same indices
result = tuple(calculate_product(elements) for elements in zip(*input_dict.values()))

print("Output:", result)
Input Dictionary: {'a': (1, 3, 5, 7), 'b': (2, 4, 6, 8), 'c': (2, 3, 5, 7)}
Output: (4, 36, 150, 392)

Method 2: Using map() with Custom Function

The map() function applies the product function across transposed tuple elements ?

def calculate_product(elements):
    result = 1
    for element in elements:
        result *= element
    return result

input_dict = {'a': (1, 3, 5, 7), 'b': (2, 4, 6, 8), 'c': (2, 3, 5, 7)}

print("Input Dictionary:", input_dict)

# Transpose tuples using list comprehension
temp_list = [list(sub) for sub in input_dict.values()]
transposed_list = [tuple(row[i] for row in temp_list) for i in range(len(temp_list[0]))]
result = tuple(map(calculate_product, transposed_list))

print("Output:", result)
Input Dictionary: {'a': (1, 3, 5, 7), 'b': (2, 4, 6, 8), 'c': (2, 3, 5, 7)}
Output: (4, 36, 150, 392)

Method 3: Using reduce() with operator.mul

This approach uses reduce() and operator.mul for a more functional programming style ?

import operator
from functools import reduce

def calculate_product(tuples_dict):
    return tuple(map(lambda *args: reduce(operator.mul, args), *tuples_dict.values()))

input_dict = {'a': (1, 3, 5, 7), 'b': (2, 4, 6, 8), 'c': (2, 3, 5, 7)}
print("Input Dictionary:", input_dict)

result = calculate_product(input_dict)
print("Output:", result)
Input Dictionary: {'a': (1, 3, 5, 7), 'b': (2, 4, 6, 8), 'c': (2, 3, 5, 7)}
Output: (4, 36, 150, 392)

Method 4: Using NumPy

NumPy's prod() function provides an efficient way to calculate products ?

import numpy as np

input_dict = {'a': (1, 3, 5, 7), 'b': (2, 4, 6, 8), 'c': (2, 3, 5, 7)}

print("Input Dictionary:", input_dict)

# Get length of tuples
tuple_length = len(input_dict[list(input_dict.keys())[0]])

# Calculate product for each index position
result = tuple(np.prod([input_dict[key][i] for key in input_dict]) 
              for i in range(tuple_length))

print("Output:", result)
Input Dictionary: {'a': (1, 3, 5, 7), 'b': (2, 4, 6, 8), 'c': (2, 3, 5, 7)}
Output: (4, 36, 150, 392)

Comparison

Method Readability Performance Dependencies
zip() with custom function High Good None
map() with transpose Medium Good None
reduce() with operator Medium Good functools, operator
NumPy prod() High Best NumPy

Conclusion

Multiple approaches exist for calculating tuple value products in dictionaries. The zip() method offers the best balance of readability and performance without external dependencies, while NumPy provides the most efficient solution for large datasets.

Updated on: 2026-03-27T15:56:58+05:30

291 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements