Tutorial Playlist
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.
PAVAN VADAPALLI
popular
Talk to our experts. We’re available 24/7.
Indian Nationals
1800 210 2020
Foreign Nationals
+918045604032
upGrad does not grant credit; credits are granted, accepted or transferred at the sole discretion of the relevant educational institution offering the diploma or degree. We advise you to enquire further regarding the suitability of this program for your academic, professional requirements and job prospects before enrolling. .