
Python
Learning Level
Master dictionary methods and practical patterns for real-world data manipulation.
`.get()` — Safe Access
person = {"name": "Alice", "age": 30, "city": "NYC"}
# Regular access - raises KeyError if missing
print(person["country"]) # KeyError!
# Safe access with .get()
print(person.get("country")) # None (no error)
print(person.get("country", "Unknown")) # "Unknown" (default)`.keys()`, `.values()`, `.items()` — Iteration
person = {"name": "Alice", "age": 30, "city": "NYC"}
# Get all keys
print(list(person.keys())) # ["name", "age", "city"]
# Get all values
print(list(person.values())) # ["Alice", 30, "NYC"]
# Get key-value pairs
for key, value in person.items():
print(f"{key}: {value}")`.update()` — Merge Dictionaries
person = {"name": "Alice", "age": 30}
updates = {"age": 31, "city": "NYC"}
person.update(updates)
print(person) # {"name": "Alice", "age": 31, "city": "NYC"}Pattern 1: Grouping Data
# Organize students by grade
students = ["Alice", "Bob", "Carol", "David"]
grades = {"Alice": "A", "Bob": "B", "Carol": "A", "David": "C"}
by_grade = {}
for student, grade in grades.items():
if grade not in by_grade:
by_grade[grade] = []
by_grade[grade].append(student)
print(by_grade)
# {"A": ["Alice", "Carol"], "B": ["Bob"], "C": ["David"]}
# Cleaner: use .setdefault()
by_grade = {}
for student, grade in grades.items():
by_grade.setdefault(grade, []).append(student)Pattern 2: Counting Occurrences
text = "hello world"
letter_counts = {}
for letter in text:
if letter in letter_counts:
letter_counts[letter] += 1
else:
letter_counts[letter] = 1
print(letter_counts) # {"h": 1, "e": 1, "l": 3, "o": 2, "w": 1, "r": 1, "d": 1}
# Better: use .get() with default
letter_counts = {}
for letter in text:
letter_counts[letter] = letter_counts.get(letter, 0) + 1
# Best: use collections.Counter (specialized tool)
from collections import Counter
letter_counts = Counter(text)Pattern 3: Dictionary Comprehension
# Create dict from list
numbers = [1, 2, 3, 4, 5]
squares = {n: n**2 for n in numbers}
print(squares) # {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
# Filter while creating
evens = {n: n**2 for n in numbers if n % 2 == 0}
print(evens) # {2: 4, 4: 16}
# Transform values
prices = {"apple": 1.50, "banana": 0.75}
discounted = {item: price * 0.9 for item, price in prices.items()}# Store and manipulate user data
users = {
"alice": {"email": "alice@example.com", "posts": 5, "followers": 100},
"bob": {"email": "bob@example.com", "posts": 3, "followers": 50}
}
# Add new user
new_user = {"email": "carol@example.com", "posts": 0, "followers": 0}
users["carol"] = new_user
# Update user
users["alice"]["posts"] += 1
# Find users with most followers
most_popular = max(users.items(), key=lambda item: item[1]["followers"])
print(most_popular) # ("alice", {...})
# Count total posts
total_posts = sum(user["posts"] for user in users.values())
print(total_posts) # 8| Method | Purpose | Returns |
|---|---|---|
| `.get(key, default)` | Safe access | Value or default |
| `.keys()` | Get all keys | View object |
| `.values()` | Get all values | View object |
| `.items()` | Get key-value pairs | View object |
| `.update(other)` | Merge dicts | None |
| `.pop(key, default)` | Remove & return | Value |
| `.setdefault(key, val)` | Get or set | Value |
| `.clear()` | Remove all | None |
Ready to practice? Challenges | Quiz
Resources
Ojasa Mirai
Master AI-powered development skills through structured learning, real projects, and verified credentials. Whether you're upskilling your team or launching your career, we deliver the skills companies actually need.
Learn Deep • Build Real • Verify Skills • Launch Forward