PYTHON
Merge Multiple Dictionaries Efficiently in Python
Learn modern and backward-compatible methods to merge dictionaries in Python, including the new union operators (Python 3.9+) and the `**` unpacking syntax for combining data.
dict1 = {"name": "Alice", "age": 30}
dict2 = {"city": "New York", "occupation": "Engineer"}
dict3 = {"age": 31, "country": "USA"} # age will be overwritten
# Method 1: Using the dictionary union operator (Python 3.9+)
# Creates a new dictionary. Keys in later dictionaries override earlier ones.
merged_dict_union = dict1 | dict2 | dict3
print(f"Merged with union operator: {merged_dict_union}")
# Method 2: Using the update() method (modifies in-place)
# Good for adding items to an existing dictionary.
config = {"DEBUG": True, "HOST": "localhost"}
new_settings = {"PORT": 8000, "DEBUG": False} # DEBUG will be overwritten
config.update(new_settings)
print(f"Merged with update() (in-place): {config}")
# Method 3: Using ** unpacking operator (creates a new dictionary)
# Compatible with older Python versions (Python 3.5+ for this syntax).
# Keys in later dictionaries also override earlier ones.
merged_dict_unpack = {**dict1, **dict2, **dict3}
print(f"Merged with ** unpacking: {merged_dict_unpack}")
# Example: Merging with default values
defaults = {"theme": "dark", "language": "en"}
user_settings = {"language": "fr"}
final_settings = {**defaults, **user_settings} # user_settings overrides defaults
print(f"Merged with defaults: {final_settings}")
How it works: Merging dictionaries is a common task, especially when dealing with configuration, user preferences, or API parameters. Python offers several efficient ways to combine dictionaries. The `|` union operator (Python 3.9+) and the `**` unpacking syntax are concise ways to create a new merged dictionary, where values from later dictionaries override earlier ones for duplicate keys. The `update()` method modifies an existing dictionary in-place, suitable for extending or overwriting its contents. Choosing the right method depends on whether you need to create a new dictionary or modify an existing one, and your target Python version.