Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Inverting a dictionary
๐ Scenario: Imagine you have a dictionary that stores the names of fruits as keys and their colors as values. You want to create a new dictionary that flips this information, so the colors become the keys and the fruits become the values.
๐ฏ Goal: Build a Python program that inverts a dictionary by swapping its keys and values.
๐ What You'll Learn
Create a dictionary with fruit names as keys and their colors as values
Create a variable to hold the inverted dictionary
Use a dictionary comprehension to invert the original dictionary
Print the inverted dictionary
๐ก Why This Matters
๐ Real World
Inverting dictionaries is useful when you want to look up information in reverse, like finding all fruits by their color instead of the other way around.
๐ผ Career
Understanding how to manipulate dictionaries and use comprehensions is important for data processing, software development, and many programming tasks.
Progress0 / 4 steps
1
Create the original dictionary
Create a dictionary called fruits with these exact entries: 'apple': 'red', 'banana': 'yellow', 'grape': 'purple', 'orange': 'orange', 'lemon': 'yellow'.
Python
Hint
Use curly braces {} to create the dictionary and separate each key-value pair with a comma.
2
Create an empty dictionary for the inverted data
Create an empty dictionary called inverted to hold the inverted fruit-color pairs.
Python
Hint
Use empty curly braces {} to create an empty dictionary.
3
Invert the dictionary using dictionary comprehension
Use a dictionary comprehension to create the inverted dictionary by swapping keys and values from fruits. Use color and fruit as the variable names in the comprehension.
Python
Hint
Use {key: value for key, value in dictionary.items()} format, swapping the key and value positions.
4
Print the inverted dictionary
Write a print statement to display the inverted dictionary.
Python
Hint
Use print(inverted) to show the result.
Practice
(1/5)
1.
What does inverting a dictionary mean in Python?
easy
A. Sorting the dictionary by keys
B. Swapping keys and values so values become keys and keys become values
C. Removing duplicate keys from the dictionary
D. Changing all values to uppercase strings
Solution
Step 1: Understand dictionary structure
A dictionary has keys and values paired together.
Step 2: Define inverting
Inverting means swapping each key with its value, so keys become values and values become keys.
Final Answer:
Swapping keys and values so values become keys and keys become values -> Option B
Quick Check:
Inverting = swapping keys and values [OK]
Hint: Invert means swap keys and values in a dictionary [OK]
Common Mistakes:
Thinking inverting sorts the dictionary
Confusing inverting with removing duplicates
Assuming values become uppercase strings
2.
Which of the following is the correct syntax to invert a dictionary d using dictionary comprehension?
easy
A. {k: v for k, v in d}
B. {k: v for v, k in d.items()}
C. {d[v]: d[k] for k, v in d.items()}
D. {v: k for k, v in d.items()}
Solution
Step 1: Recall dictionary comprehension syntax
It uses {new_key: new_value for key, value in dict.items()}.
Step 2: Swap keys and values correctly
To invert, new_key = value and new_value = key, so use {v: k for k, v in d.items()}.
Final Answer:
{v: k for k, v in d.items()} -> Option D
Quick Check:
Correct syntax = {v: k for k, v in d.items()} [OK]
Hint: Use {v: k for k, v in d.items()} to invert dictionary [OK]
Common Mistakes:
Swapping variables incorrectly in comprehension
Using d[v] or d[k] inside comprehension wrongly
Forgetting to call .items() on dictionary
3.
What is the output of this code?
original = {'a': 1, 'b': 2, 'c': 3}
inverted = {v: k for k, v in original.items()}
print(inverted)
medium
A. {1: 'a', 2: 'b', 3: 'c'}
B. {'a': 1, 'b': 2, 'c': 3}
C. {'1': 'a', '2': 'b', '3': 'c'}
D. Error: unhashable type
Solution
Step 1: Understand original dictionary
Keys are 'a', 'b', 'c' and values are 1, 2, 3.
Step 2: Invert dictionary using comprehension
Swapping keys and values gives keys 1, 2, 3 and values 'a', 'b', 'c'.
Final Answer:
{1: 'a', 2: 'b', 3: 'c'} -> Option A
Quick Check:
Inverted dict = {1: 'a', 2: 'b', 3: 'c'} [OK]
Hint: Invert swaps keys and values exactly as pairs [OK]
Common Mistakes:
Expecting original dictionary output
Confusing string and integer keys
Thinking inversion causes error here
4.
What is wrong with this code to invert a dictionary?
d = {'x': 10, 'y': 10}
inverted = {v: k for k, v in d.items()}
print(inverted)
medium
A. It will keep only one key for duplicate values
B. It will invert correctly with no issues
C. It will raise a TypeError
D. It will raise a KeyError
Solution
Step 1: Identify duplicate values in dictionary
Both 'x' and 'y' have value 10, which is duplicated.
Step 2: Understand dictionary key uniqueness
When inverting, keys must be unique, so only one key-value pair with key 10 remains.
Final Answer:
It will keep only one key for duplicate values -> Option A
Quick Check:
Duplicate values cause lost keys in inversion [OK]
Hint: Duplicate values become keys, only last key kept [OK]
Common Mistakes:
Expecting all keys preserved after inversion
Thinking it raises an error for duplicates
Ignoring key uniqueness in dictionaries
5.
Given a dictionary with possible duplicate values, how can you invert it so each value maps to a list of keys that had that value?
original = {'a': 1, 'b': 2, 'c': 1}
Which code correctly inverts it to {1: ['a', 'c'], 2: ['b']}?
hard
A. inverted = {v: [k] for k, v in original.items()}
B. inverted = {v: k for k, v in original.items()}
C. inverted = {}
for k, v in original.items():
inverted.setdefault(v, []).append(k)
D. inverted = {v: k for v, k in original.items()}
Solution
Step 1: Understand problem with duplicates
Simple inversion loses keys when values repeat, so we need lists to hold multiple keys.
Step 2: Use setdefault and append to collect keys
Loop through items, for each value use setdefault to create list if missing, then append key.
Step 3: Check code correctness
inverted = {}
for k, v in original.items():
inverted.setdefault(v, []).append(k) uses this approach correctly, building lists of keys per value.
Final Answer:
inverted = {}
for k, v in original.items():
inverted.setdefault(v, []).append(k) -> Option C
Quick Check:
Use setdefault + append to group keys by value [OK]
Hint: Use setdefault with append to group keys by value [OK]