For working professionals
For fresh graduates
More
13. Print In Python
15. Python for Loop
19. Break in Python
23. Float in Python
25. List in Python
27. Tuples in Python
29. Set in Python
53. Python Modules
57. Python Packages
59. Class in Python
61. Object in Python
73. JSON Python
79. Python Threading
84. Map in Python
85. Filter in Python
86. Eval in Python
96. Sort in Python
101. Datetime Python
103. 2D Array in Python
104. Abs in Python
105. Advantages of Python
107. Append in Python
110. Assert in Python
113. Bool in Python
115. chr in Python
118. Count in python
119. Counter in Python
121. Datetime in Python
122. Extend in Python
123. F-string in Python
125. Format in Python
131. Index in Python
132. Interface in Python
134. Isalpha in Python
136. Iterator in Python
137. Join in Python
140. Literals in Python
141. Matplotlib
144. Modulus in Python
147. OpenCV Python
149. ord in Python
150. Palindrome in Python
151. Pass in Python
156. Python Arrays
158. Python Frameworks
160. Python IDE
164. Python PIP
165. Python Seaborn
166. Python Slicing
168. Queue in Python
169. Replace in Python
173. Stack in Python
174. scikit-learn
175. Selenium with Python
176. Self in Python
177. Sleep in Python
179. Split in Python
184. Strip in Python
185. Subprocess in Python
186. Substring in Python
195. What is Pygame
197. XOR in Python
198. Yield in Python
199. Zip in Python
In this tutorial, we delve deep into one of Python's most versatile data structures: the dictionary. Dictionary in Python is a foundational component for those upskilling in the field as it offers efficient key-value data storage, proving indispensable for data manipulation, storage, and retrieval tasks.
Dictionary in Python, termed "dict", stands out as dynamic collections of key-value pairs. With their ability to provide rapid and efficient data access, they become an inevitable tool, especially when dealing with voluminous data that needs a structured format for easy access and modification.
Code:
# Creating a dictionary using curly braces {}
student = {
"name": "Alice",
"age": 20,
"major": "Computer Science"
}
print(student)
The complexities for creating a dictionary in Python depend on various factors, including the size of the dictionary, the hash function's efficiency, and the implementation details of the Python interpreter. Here are the general complexities:
Time Complexity:
Best Case: O(1) - When creating an empty dictionary or adding the first few elements.
Average Case: O(1) - Constant time for inserting a new key-value pair.
Worst Case: O(n) - In the worst case, when there are hash collisions or frequent resizing, insertion can become linear. Resizing involves rehashing and reinserting elements, which can take time proportional to the size of the dictionary.
Space Complexity:
O(n) - The space complexity for a dictionary depends on the number of key-value pairs it contains.
Code:
student = {
"name": "Alice",
"age": 20,
"major": "Computer Science"
}
# Changing the value of an existing key
student["age"] = 21
print(student) # Output: {'name': 'Alice', 'age': 21, 'major': 'Computer Science'}
Code:
student = {
"name": "Alice",
"age": 20,
"major": "Computer Science"
}
# Changing the value of an existing key
student["age"] = 21
print(student) # Output: {'name': 'Alice', 'age': 21, 'major': 'Computer Science'}
# Adding a new key-value pair
student["university"] = "ABC University"
print(student) # Output: {'name': 'Alice', 'age': 21, 'major': 'Computer Science', 'university': 'ABC University'}
Code:
student = {
"name": "Alice",
"age": 20,
"major": "Computer Science"
}
# Accessing values using keys
name = student["name"]
age = student["age"]
major = student["major"]
print("Name:", name) # Output: Name: Alice
print("Age:", age) # Output: Age: 20
print("Major:", major) # Output: Major: Computer Science
Code:
# Creating a nested dictionary
student = {
"name": "Alice",
"age": 20,
"contact": {
"email": "alice@example.com",
"phone": "123-456-7890"
},
"courses": {
"math": 95,
"history": 85,
"english": 90
}
}
# Accessing elements in the nested dictionary
email = student["contact"]["email"]
math_score = student["courses"]["math"]
print("Email:", email) # Output: Email: alice@example.com
print("Math Score:", math_score) # Output: Math Score: 95
Code:
# Nested dictionary
student = {
"name": "Alice",
"age": 20,
"contact": {
"email": "alice@example.com",
"phone": "123-456-7890"
},
"courses": {
"math": 95,
"history": 85,
"english": 90
}
}
# Accessing a nested element
email = student["contact"]["email"]
math_score = student["courses"]["math"]
print("Email:", email) # Output: Email: alice@example.com
print("Math Score:", math_score) # Output: Math Score: 95
Code:
student = {
"name": "Alice",
"age": 20,
"major": "Computer Science"
}
# Deleting a key-value pair
del student["age"]
print(student) # Output: {'name': 'Alice', 'major': 'Computer Science'}
Code:
# Creating a dictionary
student = {
"name": "Alice",
"age": 20,
"major": "Computer Science"
}
# Accessing keys, values, and items
keys = student.keys()
values = student.values()
items = student.items()
print("Keys:", keys) # Output: Keys: dict_keys(['name', 'age', 'major'])
print("Values:", values) # Output: Values: dict_values(['Alice', 20, 'Computer Science'])
print("Items:", items) # Output: Items: dict_items([('name', 'Alice'), ('age', 20), ('major', 'Computer Science')])
# Getting a value by key, with a default value if the key is not present
age = student.get("age", "N/A")
gender = student.get("gender", "N/A")
print("Age:", age) # Output: Age: 20
print("Gender:", gender) # Output: Gender: N/A
# Adding or updating a key-value pair
student["university"] = "ABC University"
print(student) # Output: {'name': 'Alice', 'age': 20, 'major': 'Computer Science', 'university': 'ABC University'}
# Removing a key-value pair and returning its value
removed_major = student.pop("major")
print("Removed Major:", removed_major) # Output: Removed Major: Computer Science
# Removing the last key-value pair and returning it as a tuple
last_item = student.popitem()
print("Last Item:", last_item) # Output: Last Item: ('university', 'ABC University')
# Clearing all items from the dictionary
student.clear()
print(student) # Output: {}
# Copying a dictionary
original_dict = {"a": 1, "b": 2}
copy_dict = original_dict.copy()
print(copy_dict) # Output: {'a': 1, 'b': 2}
Iterating Through Keys:
Code:
student = {
"name": "Alice",
"age": 20,
"major": "Computer Science"
}
# Iterating through keys using a for loop
for key in student:
print(key)
# Output:
# name
# age
# major
Iterating Through Values:
Code:
student = {
"name": "Alice",
"age": 20,
"major": "Computer Science"
}
# Iterating through values using a for loop
for value in student.values():
print(value)
# Output:
# Alice
# 20
# Computer Science
Iterating With Key-Value Pairs (Items):
Code:
student = {
"name": "Alice",
"age": 20,
"major": "Computer Science"
}
# Iterating with key-value pairs using a for loop
for key, value in student.items():
print(key, ":", value)
# Output:
# name : Alice
# age : 20
# major : Computer Science
Using keys() Method with for loop:
Code:
student = {
"name": "Alice",
"age": 20,
"major": "Computer Science"
}
# Iterating through keys using keys() method and a for loop
for key in student.keys():
print(key)
# Output:
# name
# age
# major
Using values() Method with for loop:
Code:
student = {
"name": "Alice",
"age": 20,
"major": "Computer Science"
}
# Iterating through values using values() method and a for loop
for value in student.values():
print(value)
# Output:
# Alice
# 20
# Computer Science
Using items() Method with for Loop:
Code:
student = {
"name": "Alice",
"age": 20,
"major": "Computer Science"
}
# Iterating with key-value pairs using items() method and a for loop
for key, value in student.items():
print(key, ":", value)
# Output:
# name : Alice
# age : 20
# major : Computer Science
Dictionary keys in Python have certain properties that influence their behavior and usage. Here are some important properties of dictionary keys:
Here's an example demonstrating some of these properties:
Code:
# Immutable keys
dict1 = {1: "one", "two": 2, (3, 4): "tuple_key"}
print(dict1)
# Unique keys
dict2 = {"name": "Alice", "age": 25, "name": "Bob"}
print(dict2) # Output: {'name': 'Bob', 'age': 25}
# Unordered behavior (Python < 3.7)
dict3 = {"a": 1, "b": 2, "c": 3}
print(dict3) # Output may not maintain order
Here's an example showcasing some of these functions and methods:
Code:
student = {
"name": "Alice",
"age": 20,
"major": "Computer Science"
}
print(len(student)) # Output: 3
print(student.get("age")) # Output: 20
print(student.keys()) # Output: dict_keys(['name', 'age', 'major'])
print(student.values()) # Output: dict_values(['Alice', 20, 'Computer Science'])
print(student.items()) # Output: dict_items([('name', 'Alice'), ('age', 20), ('major', 'Computer Science')])
# Removing and returning a key-value pair
removed_item = student.popitem()
print(removed_item) # Output: ('major', 'Computer Science')
# Updating the dictionary with new data
new_data = {"university": "ABC University", "age": 21}
student.update(new_data)
print(student) # Output: {'name': 'Alice', 'age': 21, 'university': 'ABC University'}
Here's an example demonstrating how to use some of these built-in dictionary methods:
Code:
# Creating a dictionary
student = {
"name": "Alice",
"age": 20,
"major": "Computer Science"
}
# Using dictionary methods
print(student.keys()) # Output: dict_keys(['name', 'age', 'major'])
print(student.values()) # Output: dict_values(['Alice', 20, 'Computer Science'])
print(student.items()) # Output: dict_items([('name', 'Alice'), ('age', 20), ('major', 'Computer Science')])
# Removing and returning a key-value pair
removed_item = student.popitem()
print(removed_item) # Output: ('major', 'Computer Science')
# Updating the dictionary with new data
new_data = {"university": "ABC University", "age": 21}
student.update(new_data)
print(student) # Output: {'name': 'Alice', 'age': 21, 'university': 'ABC University'}
# Clearing the dictionary
student.clear()
print(student) # Output: {}
Dictionaries in Python are undeniably a pivotal data structure, bridging the gap between data storage needs and efficiency. Their flexible nature, combined with Python's suite of methods tailored for them, ensures their broad application, from simple data manipulations to complex algorithm implementations. For those on the path to Python mastery, understanding dictionaries is paramount. Hungry for more? upGrad offers a variety of courses tailored to nourish your thirst for knowledge in Python.
Dictionaries in Python are mutable, allowing modifications after their creation.
Some common dictionary methods in Python include dict.keys(), dict.values(), and dict.update(). These enhance interactions with dictionaries.
Utilize the for loop with dict.items() for efficient key-value pair iteration.
Employ the sorted() function and specify key=lambda x: x[1].
The method dict.keys() will fetch all keys present in the dictionary.
Take our Free Quiz on Python
Answer quick questions and assess your Python knowledge
Author
Talk to our experts. We are available 7 days a week, 9 AM to 12 AM (midnight)
Indian Nationals
1800 210 2020
Foreign Nationals
+918045604032
1.The above statistics depend on various factors and individual results may vary. Past performance is no guarantee of future results.
2.The student assumes full responsibility for all expenses associated with visas, travel, & related costs. upGrad does not provide any a.