How to Add Duplicate Keys in Dictionary - Python
Last Updated :
25 Jan, 2025
In Python, dictionaries are used to store key-value pairs. However, dictionaries do not support duplicate keys. In this article, we will explore several techniques to store multiple values for a single dictionary key.
Understanding Dictionary Key Constraints
In Python, dictionary keys must be unique. This means that if we try to add a key that already exists in the dictionary, the new value will overwrite the existing value. This behavior ensures that each key maps to one and only one value.
Python
d = {'name': 'Alice', 'age': 25}
# value 25 will be overwritten by 30
d['age'] = 30
print(d)
Output{'name': 'Alice', 'age': 30}
Workarounds for Duplicate Keys
Since dictionaries don’t allow duplicate keys, we use alternative methods to store multiple values under one key. Below are some common approaches.
Using list as the Dictionary Value
Instead of overwriting the value associated with a key, we can associate each key with a list. Whenever a new value needs to be added for the key, we append it to the list. This approach allows us to efficiently manage multiple values for the same key.
Python
d = {}
# Add values to the dictionary
d.setdefault('Platform', []).append('GeeksForGeeks')
d.setdefault('Courses', []).extend(['MERN', 'DSA'])
print(d)
Output{'Platform': ['GeeksForGeeks'], 'Courses': ['MERN', 'DSA']}
Explanation:
- setdefault('Platform', []) ensures 'Platform' has a list as its value then append('GeeksForGeeks') adds the value 'GeeksForGeeks'.
- setdefault('Courses', []) ensures 'Courses' has a list as its value then extend(['MERN', 'DSA']) adds 'MERN' and 'DSA' to the list.
Using dictionary of lists
In this method, we initialize each key in the dictionary with an empty list if it doesn’t already exist . We can then add new values to these lists as needed. This requires explicit checks to verify whether a key exists before appending values.
Python
d = {}
# Add values to the dictionary
if 'Platform' not in d:
d['Platform'] = []
d['Platform'].append('GeeksForGeeks')
if 'Courses' not in d:
d['Courses'] = []
d['Courses'].extend(['MERN', 'DSA'])
print(d)
Output{'Platform': ['GeeksForGeeks'], 'Courses': ['MERN', 'DSA']}
Explanation:
- if 'Platform' not in d checks if 'Platform' exists in d. If not, initializes it as an empty list: d['Platform'] = [].
- d['Platform'].append('GeeksForGeeks') adds 'GeeksForGeeks' to the 'Platform' list.
- if 'Courses' not in d checks if 'Courses' exists in d. If not, initializes it as an empty list: d['Courses'] = [].
- d['Courses'].extend(['MERN', 'DSA']) adds 'MERN' and 'DSA' to the 'Courses' list using extend().
Using defaultdict
defaultdict is a special type of dictionary that simplifies the handling of keys that need default values. It automatically initializes a key with a default value like an empty list if it doesn’t exist, removing the need for manual checks.
Python
from collections import defaultdict
# Initialize the defaultdict
d = defaultdict(list)
# Add values to the dictionary
d['Platform'].append('GeeksForGeeks')
d['Courses'].extend(['MERN', 'DSA'])
print(dict(d))
Output{'Platform': ['GeeksForGeeks'], 'Courses': ['MERN', 'DSA']}
Explanation:
- d['Platform'].append('GeeksForGeeks') adds 'GeeksForGeeks' to the 'Platform' list. If the key doesn't exist, it is created with an empty list.
- d['Courses'].extend(['MERN', 'DSA']) adds 'MERN' and 'DSA' to the 'Courses' list. If the key doesn't exist, it is created with an empty list.
Using list of dictionaries
If we require true duplicate keys, storing each key-value pair as a separate dictionary inside a list allows multiple entries for the same key. Each dictionary represents one key-value pair, and multiple such dictionaries can coexist in the list.
Python
d = []
# Add values as dictionaries
d.append({'Platform': 'GeeksForGeeks'})
d.append({'Courses': 'MERN'})
d.append({'Courses': 'DSA'})
print(d)
Output[{'Platform': 'GeeksForGeeks'}, {'Courses': 'MERN'}, {'Courses': 'DSA'}]
Explanation:
- d.append({'Platform': 'GeeksForGeeks'}) adds {'Platform': 'GeeksForGeeks'} to the list.
- d.append({'Courses': 'MERN'}) adds {'Courses': 'MERN'} to the list.
- d.append({'Courses': 'DSA'}) adds {'Courses': 'DSA'} to the list.
Similar Reads
How to Add Same Key Value in Dictionary Python Dictionaries are powerful data structures that allow us to store key-value pairs. However, one common question that arises is how to handle the addition of values when the keys are the same. In this article, we will see different methods to add values for the same dictionary key using Python.Adding
2 min read
Add new keys to a dictionary in Python In this article, we will explore various methods to add new keys to a dictionary in Python. Let's explore them with examples:Using Assignment Operator (=)The simplest way to add a new key is by using assignment operator (=).Pythond = {"a": 1, "b": 2} d["c"] = 3 print(d)Output{'a': 1, 'b': 2, 'c': 3}
2 min read
How to Create a Dictionary in Python The task of creating a dictionary in Python involves storing key-value pairs in a structured and efficient manner, enabling quick lookups and modifications. A dictionary is an unordered, mutable data structure where each key must be unique and immutable, while values can be of any data type. For exa
3 min read
Dictionary with Tuple as Key in Python Dictionaries allow a wide range of key types, including tuples. Tuples, being immutable, are suitable for use as dictionary keys when storing compound data. For example, we may want to map coordinates (x, y) to a specific value or track unique combinations of values. Let's explores multiple ways to
4 min read
How to Alphabetize a Dictionary in Python Alphabetizing a dictionary in Python can be useful for various applications, such as data organization and reporting. In this article, we will explore different methods to alphabetize a dictionary by its keys or values.Dictionary OrderingIn Python, dictionaries are a powerful data structure that all
2 min read