Python - Minimum Key Equal Pairs

Finding minimum key equal pairs means finding the smallest value for each unique key in a collection of key-value pairs. Python offers several efficient approaches to solve this problem using dictionaries, itertools, and collections module.

Understanding Key Concepts

Dictionaries: Python dictionaries use curly braces {} and store key-value pairs. Access values using square brackets with the key inside.

Lambda Functions: Anonymous functions defined in a single line, commonly used with higher-order functions like sorted() and min().

DefaultDict: A subclass of dict that automatically creates missing keys with default values, eliminating KeyError exceptions.

Method 1: Using Dictionary

The most straightforward approach uses a standard dictionary to track minimum values for each key ?

def find_minimum_key_equal_pairs(elements):
    pairs = {}
    
    for element in elements:
        key = element[0]  
        value = element[1]  
        
        if key in pairs:
            if value < pairs[key]:
                pairs[key] = value
        else:
            pairs[key] = value
    
    return pairs

elements = [('A', 5), ('B', 3), ('A', 2), ('C', 4), ('B', 1)]
result = find_minimum_key_equal_pairs(elements)
print(result)
{'A': 2, 'B': 1, 'C': 4}

Method 2: Using GroupBy from itertools

This approach groups elements by key and finds the minimum value in each group ?

from itertools import groupby

def find_minimum_key_equal_pairs(elements):
    sorted_elements = sorted(elements, key=lambda x: x[0])  
    groups = groupby(sorted_elements, key=lambda x: x[0])  
    
    pairs = {key: min(value[1] for value in group) for key, group in groups}
    
    return pairs

elements = [('A', 5), ('B', 3), ('A', 2), ('C', 4), ('B', 1)]
result = find_minimum_key_equal_pairs(elements)
print(result)
{'A': 2, 'B': 1, 'C': 4}

Method 3: Using DefaultDict

DefaultDict with infinity as the default value simplifies minimum value tracking ?

from collections import defaultdict

def find_minimum_key_equal_pairs(elements):
    pairs = defaultdict(lambda: float('inf'))
    
    for key, value in elements:
        if value < pairs[key]:
            pairs[key] = value
    
    return dict(pairs)  # Convert to regular dict for cleaner output

elements = [('A', 5), ('B', 3), ('A', 2), ('C', 4), ('B', 1)]
result = find_minimum_key_equal_pairs(elements)
print(result)
{'A': 2, 'B': 1, 'C': 4}

Comparison

Method Time Complexity Space Complexity Best For
Dictionary O(n) O(k) Simple, readable code
GroupBy O(n log n) O(n) When data needs sorting
DefaultDict O(n) O(k) Cleaner code, no key checks

Conclusion

Use the dictionary approach for simple scenarios. DefaultDict provides cleaner code by eliminating key existence checks. GroupBy works well when you need sorted results or already have sorted data.

Updated on: 2026-03-27T11:18:29+05:30

172 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements