Adding Items to a Dictionary in a Loop in Python
The task of adding items to a dictionary in a loop in Python involves iterating over a collection of keys and values and adding them to an existing dictionary. This process is useful when we need to dynamically build or update a dictionary, especially when dealing with large datasets or generating key-value pairs in real-time.
For example, consider the lists a = ['Name', 'Website', 'Topic', 'Founded'] and b = ['GeeksforGeeks', 'https://www.geeksforgeeks.org/', 'Programming', 2009]. If we want to add the key-value pairs from these lists to a dictionary using a loop, the dictionary will be {'Name': 'GeeksforGeeks', 'Website': 'https://www.geeksforgeeks.org/', 'Topic': 'Programming', 'Founded': 2009}.
Using update()
update() is an efficient way to add key-value pairs to an existing dictionary inside a loop. It allows us to update the dictionary with new entries at each iteration, either by adding new keys or modifying existing ones.
a = ['Name', 'Website', 'Topic', 'Founded']
b = ['GeeksforGeeks', 'https://www.geeksforgeeks.org/', 'Programming', 2009]
res = {} # initializes an empty dictionary
for i, j in zip(a, b):
res.update({i: j})
print(res)
Output
{'Name': 'GeeksforGeeks', 'Website': 'https://www.geeksforgeeks.org/', 'Topic': 'Programming', 'Founded': 2009}
Explanation:
- zip(a, b) pairs elements from lists a and b, matching each element from a with the corresponding element from b .
- for i, j in zip(a, b), i represents the element from list a and j represents the corresponding element from list b.
- res.update({i: j}) adds each key-value pair to the res dictionary.
Table of Content
Using assignment operator
This method involves directly assigning values to the dictionary keys by iterating through both the keys and values. We can use a loop to access each key and then use the index to retrieve the corresponding value from a separate list.
a = ['Name', 'Website', 'Topic', 'Founded']
b = ['GeeksforGeeks', 'https://www.geeksforgeeks.org/', 'Programming', 2009]
res = {} # initializes an empty dictionary
for i in range(len(a)):
res[a[i]] = b[i]
print(res)
Output
{'Name': 'GeeksforGeeks', 'Website': 'https://www.geeksforgeeks.org/', 'Topic': 'Programming', 'Founded': 2009}
Explanation:
- for i in range(len(a)) loops over indices of lists a and b , since they have the same length.
- a[i] accesses the key from a and b[i] accesses the corresponding value from b.
- res[a[i]] = b[i] adds the key-value pair to the dictionary res.
Using enumerate
enumerate() provides both the index and the key during iteration, which allows access to corresponding values from another list. This method is useful when we need the index explicitly.
a = ['Name', 'Website', 'Topic', 'Founded']
b = ['GeeksforGeeks', 'https://www.geeksforgeeks.org/', 'Programming', 2009]
res = {} # initializes an empty dictionary
for i, j in enumerate(a):
res[j] = b[i]
print(res)
Output
{'Name': 'GeeksforGeeks', 'Website': 'https://www.geeksforgeeks.org/', 'Topic': 'Programming', 'Founded': 2009}
Explanation:
- enumerate(a) gives the index i and the key j from list a, while b[i] accesses the corresponding value from list b.
- res[j] = b[i] adds the key-value pair to the dictionary res.
Using dict.fromkeys()
This method initializes a dictionary with predefined keys and default value which can then be updated with a loop. Although this method is less efficient for cases where both keys and values are available upfront, it still serves as a valid approach for dictionary initialization.
a = ['Name', 'Website', 'Topic', 'Founded']
b = ['GeeksforGeeks', 'https://www.geeksforgeeks.org/', 'Programming', 2009]
res = dict.fromkeys(a) # Creates a dictionary with keys and default None values
for i, j in enumerate(a):
res[j] = b[i]
print(res)
Output
{'Name': 'GeeksforGeeks', 'Website': 'https://www.geeksforgeeks.org/', 'Topic': 'Programming', 'Founded': 2009}
Explanation:
- enumerate(a) provides the index i and key j from list a, while b[i] accesses the corresponding value from list b.
- res[j] = b[i] updates the dictionary with the key-value pair.