Loading Python Environment...
This may take a few seconds on first load
Challenges
Challenge: Word Frequency Counter
Create a function that counts the frequency of each word in a text string and returns the result as a dictionary where keys are the unique words found in the text and values are the number of times each word appears.
Requirements:
- Convert all words to lowercase
- Remove punctuation from words
- Ignore empty strings
Example:
text = "Hello world! Hello Python."
result = word_frequency(text)
print(result)
# Output: {'hello': 2, 'world': 1, 'python': 1}Visualization Explained:
The visualization on the right shows your dictionary as it's being built. Each key-value pair is represented, making it easy to see how your dictionary evolves as your code executes.
Dictionary Resources
Dictionary Methods
Complete reference of all Python dictionary methods with examples
Best Practices
Coding standards and patterns for using dictionaries effectively
JSON & Dictionaries
Converting between JSON and Python dictionaries
Real-World Examples
Practical dictionary use cases in production code
Data Structure Comparisons
Dict vs List vs Set vs Tuple - when to use each
Advanced Techniques
defaultdict, Counter, OrderedDict and more
Performance Guide
Time complexity and optimization techniques
FAQ
Common Python dictionary questions answered
Glossary
Dictionary terms and definitions explained
Dictionary Methods Reference
dict.get(key[, default])
Returns the value for key if key is in the dictionary, else default.
user = {'name': 'John', 'age': 30}
print(user.get('email', 'Not found'))dict.items()
Returns a view object that displays a list of dictionary's (key, value) tuple pairs.
user = {'name': 'John', 'age': 30}
for key, value in user.items():
print(key, value)dict.keys()
Returns a view object that displays a list of all the keys.
user = {'name': 'John', 'age': 30}
print(list(user.keys()))dict.values()
Returns a view object that displays a list of all the values.
user = {'name': 'John', 'age': 30}
print(list(user.values()))dict.update([other])
Updates the dictionary with the key/value pairs from other.
user = {'name': 'John'}
user.update({'age': 30, 'city': 'NYC'})
print(user)dict.pop(key[, default])
Removes and returns the value for key. If key is not found, default is returned.
user = {'name': 'John', 'age': 30}
age = user.pop('age')
email = user.pop('email', None)Common Dictionary Patterns
Dictionary Comprehension
A concise way to create dictionaries using an expression.
# Create a dictionary of squares
numbers = [1, 2, 3, 4, 5]
squares = {num: num**2 for num in numbers}
print(squares)
# {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
# Dictionary comprehension with condition
even_squares = {num: num**2 for num in numbers if num % 2 == 0}
print(even_squares)
# {2: 4, 4: 16}Counting with Dictionaries
Using dictionaries to count occurrences (the basis of the current challenge).
# Method 1: Manual counting
text = "apple banana apple orange banana apple"
counts = {}
for word in text.split():
counts[word] = counts.get(word, 0) + 1
print(counts)
# {'apple': 3, 'banana': 2, 'orange': 1}
# Method 2: Using collections.Counter
from collections import Counter
counts = Counter(text.split())
print(dict(counts))
# {'apple': 3, 'banana': 2, 'orange': 1}Nested Dictionaries
Using dictionaries to represent hierarchical data structures.
# Creating a nested dictionary
person = {
'name': 'John',
'age': 30,
'address': {
'city': 'New York',
'zip': '10001',
'coordinates': {
'lat': 40.7128,
'lng': -74.0060
}
},
'skills': ['Python', 'JavaScript']
}
# Accessing nested values
print(person['address']['city']) # New York
print(person['address']['coordinates']['lat']) # 40.7128
# Safe access with get() for nested dictionaries
city = person.get('address', {}).get('city', 'Unknown')
print(city) # New YorkDictionary Merging
Different ways to combine dictionaries.
# Method 1: Using update()
dict1 = {'a': 1, 'b': 2}
dict2 = {'b': 3, 'c': 4}
merged = dict1.copy() # Create a copy to avoid modifying original
merged.update(dict2)
print(merged) # {'a': 1, 'b': 3, 'c': 4}
# Method 2: Using unpacking (Python 3.5+)
dict1 = {'a': 1, 'b': 2}
dict2 = {'b': 3, 'c': 4}
merged = {**dict1, **dict2} # Later values override earlier ones
print(merged) # {'a': 1, 'b': 3, 'c': 4}
# Method 3: Using | operator (Python 3.9+)
dict1 = {'a': 1, 'b': 2}
dict2 = {'b': 3, 'c': 4}
merged = dict1 | dict2 # Similar to unpacking
print(merged) # {'a': 1, 'b': 3, 'c': 4}