Bird
Raised Fist0
Pythonprogramming~10 mins

Inverting a dictionary in Python - Step-by-Step Execution

Choose your learning style10 modes available

Start learning this pattern below

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
Concept Flow - Inverting a dictionary
Start with original dictionary
For each key-value pair
Swap key and value
Add swapped pair to new dictionary
Repeat for all pairs
Return inverted dictionary
End
We take each key and value from the original dictionary, swap them, and put them into a new dictionary until all pairs are processed.
Execution Sample
Python
original = {'a': 1, 'b': 2, 'c': 3}
inverted = {v: k for k, v in original.items()}
print(inverted)
This code creates a new dictionary by swapping keys and values from the original dictionary.
Execution Table
StepCurrent keyCurrent valueActionInverted dictionary state
1'a'1Add 1:'a' to inverted{1: 'a'}
2'b'2Add 2:'b' to inverted{1: 'a', 2: 'b'}
3'c'3Add 3:'c' to inverted{1: 'a', 2: 'b', 3: 'c'}
4No more items-Finish loop{1: 'a', 2: 'b', 3: 'c'}
💡 All key-value pairs processed, loop ends.
Variable Tracker
VariableStartAfter 1After 2After 3Final
original{'a': 1, 'b': 2, 'c': 3}{'a': 1, 'b': 2, 'c': 3}{'a': 1, 'b': 2, 'c': 3}{'a': 1, 'b': 2, 'c': 3}{'a': 1, 'b': 2, 'c': 3}
inverted{}{1: 'a'}{1: 'a', 2: 'b'}{1: 'a', 2: 'b', 3: 'c'}{1: 'a', 2: 'b', 3: 'c'}
Key Moments - 2 Insights
Why do the keys and values swap places in the new dictionary?
Because in the comprehension, we write {v: k} which means the original value becomes the new key, and the original key becomes the new value, as shown in execution_table steps 1-3.
What happens if two original keys have the same value?
The last key processed will overwrite the previous one in the inverted dictionary because dictionary keys must be unique. This is not shown here but is important to know.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the inverted dictionary after step 2?
A{2: 'b'}
B{1: 'a', 2: 'b'}
C{'a': 1, 'b': 2}
D{}
💡 Hint
Check the 'Inverted dictionary state' column at step 2 in the execution_table.
At which step does the loop finish processing all items?
AStep 3
BStep 2
CStep 4
DStep 1
💡 Hint
Look for the step where 'No more items' is the current key in the execution_table.
If the original dictionary had two keys with value 1, what would happen in the inverted dictionary?
AOnly one key would be stored for key 1, the last one processed
BBoth keys would appear as values for key 1
CAn error would occur
DThe inverted dictionary would be empty
💡 Hint
Recall that dictionary keys must be unique; see key_moments about overwriting.
Concept Snapshot
Inverting a dictionary swaps keys and values.
Use a dictionary comprehension: {v: k for k, v in original.items()}.
Each original value becomes a new key.
Duplicates in values cause overwriting.
Result is a new dictionary with swapped pairs.
Full Transcript
We start with an original dictionary. For each key and value, we swap them and add to a new dictionary. This process repeats until all pairs are processed. The final result is the inverted dictionary where original values are keys and original keys are values. If original values repeat, the last key overwrites previous ones in the inverted dictionary.

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

  1. Step 1: Understand dictionary structure

    A dictionary has keys and values paired together.
  2. Step 2: Define inverting

    Inverting means swapping each key with its value, so keys become values and values become keys.
  3. Final Answer:

    Swapping keys and values so values become keys and keys become values -> Option B
  4. 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

  1. Step 1: Recall dictionary comprehension syntax

    It uses {new_key: new_value for key, value in dict.items()}.
  2. 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()}.
  3. Final Answer:

    {v: k for k, v in d.items()} -> Option D
  4. 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

  1. Step 1: Understand original dictionary

    Keys are 'a', 'b', 'c' and values are 1, 2, 3.
  2. Step 2: Invert dictionary using comprehension

    Swapping keys and values gives keys 1, 2, 3 and values 'a', 'b', 'c'.
  3. Final Answer:

    {1: 'a', 2: 'b', 3: 'c'} -> Option A
  4. 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

  1. Step 1: Identify duplicate values in dictionary

    Both 'x' and 'y' have value 10, which is duplicated.
  2. Step 2: Understand dictionary key uniqueness

    When inverting, keys must be unique, so only one key-value pair with key 10 remains.
  3. Final Answer:

    It will keep only one key for duplicate values -> Option A
  4. 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

  1. Step 1: Understand problem with duplicates

    Simple inversion loses keys when values repeat, so we need lists to hold multiple keys.
  2. 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.
  3. 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.
  4. Final Answer:

    inverted = {} for k, v in original.items(): inverted.setdefault(v, []).append(k) -> Option C
  5. Quick Check:

    Use setdefault + append to group keys by value [OK]
Hint: Use setdefault with append to group keys by value [OK]
Common Mistakes:
  • Using simple comprehension losing duplicate keys
  • Swapping variables incorrectly in comprehension
  • Expecting one-to-one inversion with duplicates