Update a list of tuples using another list in Python

When you need to update a list of tuples using another list, the defaultdict from the collections module provides an elegant solution. This approach allows you to merge tuples with matching keys and aggregate their values.

defaultdict is a container similar to dictionaries that automatically creates missing keys with a default value. It's a subclass of the dict class that never raises a KeyError, making it perfect for grouping operations.

Example

Here's how to merge two lists of tuples and keep the maximum value for each key ?

from collections import defaultdict

def merge_vals(list_1, list_2):
    my_dict = defaultdict(list)
    for i, j in list_1 + list_2:
        my_dict[i].append(j)    
    return sorted([(i, max(j)) for i, j in my_dict.items()],
    key = lambda x:x[0])

my_list_1 = [('v', 1), ('q', 2), ('o', 0)]
my_list_2 = [('q', 5), ('o', 3)]

print("The first list of tuple is : ")
print(my_list_1)
print("The second list of tuple is : ")
print(my_list_2)
print("After merging, it becomes : ")
print(merge_vals(my_list_1, my_list_2))
The first list of tuple is : 
[('v', 1), ('q', 2), ('o', 0)]
The second list of tuple is : 
[('q', 5), ('o', 3)]
After merging, it becomes : 
[('o', 3), ('q', 5), ('v', 1)]

How It Works

The algorithm follows these steps:

  • Combine lists: Concatenate both input lists using + operator
  • Group values: Use defaultdict(list) to group values by their keys automatically
  • Aggregate: Apply max() function to find the highest value for each key
  • Sort: Return results sorted alphabetically by key using lambda x:x[0]

Alternative Approach Using Dictionary

You can achieve the same result using a regular dictionary ?

def merge_with_dict(list_1, list_2):
    result_dict = {}
    for key, value in list_1 + list_2:
        if key in result_dict:
            result_dict[key] = max(result_dict[key], value)
        else:
            result_dict[key] = value
    return sorted(result_dict.items())

my_list_1 = [('v', 1), ('q', 2), ('o', 0)]
my_list_2 = [('q', 5), ('o', 3)]

print("Result using regular dictionary:")
print(merge_with_dict(my_list_1, my_list_2))
Result using regular dictionary:
[('o', 3), ('q', 5), ('v', 1)]

Comparison

Method Advantages Best For
defaultdict No KeyError handling needed Complex aggregations
Regular dict No imports required Simple updates

Conclusion

Use defaultdict when merging lists of tuples to avoid KeyError exceptions and simplify grouping operations. The approach works well for aggregating values with functions like max(), min(), or sum().

Updated on: 2026-03-25T17:43:45+05:30

376 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements