📖 Scenario: You are working in a library to keep track of how many times each book title has been borrowed. This helps the library know which books are popular.
🎯 Goal: Build a program that counts how many times each book title appears in a list of borrowed books using a hash map (dictionary).
📋 What You'll Learn
Create a list called borrowed_books with exact book titles given.
Create an empty dictionary called frequency_counter to store counts.
Use a for loop to count how many times each book appears in borrowed_books.
Print the frequency_counter dictionary to show the counts.
💡 Why This Matters
🌍 Real World
Libraries, stores, and websites often count how many times items are used or bought to understand popularity.
💼 Career
Knowing how to count frequencies with hash maps (dictionaries) is a basic skill for data analysis, software development, and many programming jobs.
Progress0 / 4 steps
1
Create the list of borrowed books
Create a list called borrowed_books with these exact book titles in order: 'Harry Potter', 'The Hobbit', 'Harry Potter', '1984', 'The Hobbit', 'The Hobbit'.
DSA Python
Hint
Use square brackets [] to create a list and put the book titles as strings inside, separated by commas.
2
Create the frequency counter dictionary
Create an empty dictionary called frequency_counter to store the count of each book.
DSA Python
Hint
Use curly braces {} to create an empty dictionary.
3
Count the frequency of each book
Use a for loop with variable book to go through borrowed_books. Inside the loop, update frequency_counter to count how many times each book appears.
DSA Python
Hint
Check if the book is already a key in the dictionary. If yes, add 1 to its count. If no, set its count to 1.
4
Print the frequency counter dictionary
Print the frequency_counter dictionary to show the count of each book.
DSA Python
Hint
Use print(frequency_counter) to display the dictionary.
Practice
(1/5)
1. What does the frequency counter pattern using a hash map help you do in a list of items?
easy
A. Count how many times each item appears
B. Sort the list in ascending order
C. Remove duplicate items from the list
D. Find the largest item in the list
Solution
Step 1: Understand frequency counting
The frequency counter pattern counts occurrences of each item in a list using a hash map (dictionary).
Step 2: Compare options
Only Count how many times each item appears describes counting occurrences. Sorting, removing duplicates, or finding largest are different tasks.
Final Answer:
Count how many times each item appears -> Option A
Quick Check:
Frequency counter = count occurrences [OK]
Hint: Frequency counter counts items, not sorts or removes [OK]
Common Mistakes:
Confusing frequency counting with sorting
Thinking it removes duplicates automatically
Assuming it finds max/min values
2. Which of the following is the correct way to create an empty frequency counter using a hash map in Python?
easy
A. freq = []
B. freq = {}
C. freq = ()
D. freq = set()
Solution
Step 1: Identify data structure for frequency counter
A frequency counter uses a hash map, which in Python is a dictionary, created with curly braces {}.
Step 2: Check options
freq = {} uses {}, which creates an empty dictionary. Others create list, tuple, or set, which are incorrect here.
Final Answer:
freq = {} -> Option B
Quick Check:
Empty dict = {} for frequency counter [OK]
Hint: Use {} to create empty dictionary for frequency counter [OK]
Step 2: Use freq.get(item, 0) + 1 to update counts
freq.get(item, 0) returns current count or 0 if not found, then adds 1.
Final Answer:
{'a': 3, 'b': 2, 'c': 1} -> Option A
Quick Check:
Count 'a'=3, 'b'=2, 'c'=1 [OK]
Hint: Use dict.get(key,0)+1 to count frequencies safely [OK]
Common Mistakes:
Forgetting to add 1 to count
Using freq[item] without get causing KeyError
Miscounting occurrences
4. Find the error in this frequency counter code and choose the fix:
def freq_counter(lst):
freq = {}
for item in lst:
if item in freq:
freq[item] += 1
else:
freq[item] = 0
return freq
print(freq_counter(['x', 'y', 'x']))
medium
A. Initialize freq as a list instead of dict
B. Remove the if-else and use freq[item] += 1
C. No error, code works fine
D. Change freq[item] = 0 to freq[item] = 1
Solution
Step 1: Identify initialization error
When item is new, freq[item] is set to 0, but it should start at 1 because we found it once.
Step 2: Fix initialization
Change freq[item] = 0 to freq[item] = 1 to count first occurrence correctly.
Final Answer:
Change freq[item] = 0 to freq[item] = 1 -> Option D
Quick Check:
First occurrence count must be 1 [OK]
Hint: First time count must be 1, not 0 [OK]
Common Mistakes:
Setting initial count to 0 instead of 1
Using list instead of dict for frequency
Ignoring the else block
5. Given two lists of integers, write a function using frequency counter pattern to check if the second list contains the same frequency of elements as the first list. What will be the output of this code?
def same_frequency(lst1, lst2):
if len(lst1) != len(lst2):
return False
freq1 = {}
freq2 = {}
for num in lst1:
freq1[num] = freq1.get(num, 0) + 1
for num in lst2:
freq2[num] = freq2.get(num, 0) + 1
return freq1 == freq2
print(same_frequency([1,2,2,3], [2,1,3,2]))
print(same_frequency([1,2,2,3], [2,1,3,3]))
hard
A. False\nFalse
B. False\nTrue
C. True\nFalse
D. True\nTrue
Solution
Step 1: Build frequency dictionaries for both lists
freq1 counts {1:1, 2:2, 3:1}, freq2 for first call counts {2:2, 1:1, 3:1} which matches freq1.
Step 2: Compare frequency dictionaries
For second call, freq2 counts {2:1, 1:1, 3:2} which differs from freq1, so returns False.
Final Answer:
True
False -> Option C
Quick Check:
Same frequency = True, different frequency = False [OK]
Hint: Compare frequency dicts to check equal element counts [OK]
Common Mistakes:
Only comparing lengths, not frequencies
Not building frequency for both lists
Returning True when frequencies differ
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.