Lab 9: Inverting a dictionary

Building a reverse dictionary

Partner B

Remember the cs111dict (click to go to part) dictionary we built earlier in today's lab? Wouldn't it be cool to be able to create a reverse dictionary where we use the values as the keys? We will return a dictionary where the keys are what used to be the values, and each key has a list of associated values (original keys).

Open the file invert.py. At the top of the invert.py file, there is a function called makeCS111Dict that creates the name:year cs111 dictionary, just like the dictionary you created at the start of today's lab. Since the given cs111dict dictionary has student names as keys and graduation years as values. The reverse dictionary of cs111dict will have the graduation years as keys and the students' names associated with those graduation years as values.

For example,

Let's take a look at the original cs111dict name:year dictionary. Recall that it contains 101 students.

>>> cs111dict.values()
dict_values(['2024', '2023', '2024', '2024', '2023', '2024', 
'2023', '2024', '2024', '2023', '2023', '2024', '2024', 
'2023', '2024', '2021', '2024', '2024', '2023', '2023', 
'2024', '2024', '2024', '2023', '2023', '2023', '2022', 
'2024', '2023', '2023', '2024', '2024', '2024', '2024', 
'2024', '2024', '2023', '2024', '2024', '2023', '2023', 
'2021', '2024', '2024', '2021', '2021', '2021', '2024', 
'2024', '2024', '2024', '2024', '2022', '2023', '2024', 
'2023', '2024', '2024', '2024', '2024', '2022', '2024', 
'2023', '2024', '2023', '2023', '2024', '2024', '2021', 
'2022', '2024', '2023', '2024', '2024', '2023', '2024', 
'2023', '2023', '2023', '2024', '2024', '2024', '2024', 
'2021', '2022', '2023', '2023', '2024', '2024', '2024', 
'2023', '2021', '2022', '2024', '2024', '2021', '2023', 
'2024', '2023', '2023', '2024'])

Now, if we invert the original cs111dict dictionary, we get the inverted dictionary. This block of code is commented out in your invert.py file in your lab08 folder (you can umcomment them once you have written your invertDict function).

     print("Invert the 111 dict")
     inverted = invertDict(cs111dict)
     print(inverted.keys())
     print("**2021**\n",inverted['2021'])
     print("**2022**\n",inverted['2022'])
     print("**2023**\n",inverted['2023'])
     print("**2024**\n",inverted['2024'])

produces this:

Invert the 111 dict
dict_keys(['2024', '2023', '2021', '2022'])
**2021**
 ['Lena', 'Andrea', 'Amal', 'Ronghao', 'Alexandra', 'Rebecca', 
  'Jocelyn', 'Bryant', 'Claire']
**2022**
 ['Rumi', 'Helen', 'Lisa', 'Yujue', 'Maya', 'Ting']
**2023**
 ['Sarah', 'Jiyoung', 'Parul', 'Briana', 'Liliana', 'Dakota', 
  'Cecilia', 'Sophie', 'Dina', 'Emilia', 'Erica', 'Ananya', 
  'Julia', 'Grace', 'Chelsea', 'Juliette', 'Dominique', 'Molly', 
  'Chae', 'Marissa', 'Daisy', 'Aisha', 'Kealani', 'Preeda', 'Sapphire', 
  'Mira', 'Sadie', 'Havannah', 'Alyssa', 'Amelia', 'Emma', 'Lily']
**2024**
 ['Karina', 'Jamie', 'Angela', 'Lauren', 'Elizabeth', 'Edith', 'Calla', 
  'Eunji', 'Annabel', 'Maura', 'Charlotte', 'Lea', 'Victoria', 'Meha', 
  'Keiko', 'Diana', 'Anah', 'Youngja', 'Shan', 'Joy', 'Makiko', 'Sabina', 
  'Paige', 'Kalau', 'Isabella', 'HeeJoo', 'Breana', 'Ana', 'Jingyuan', 'Nicole', 
  'Hope', 'Susanna', 'Daneen', 'Isabelle', 'Hongyu', 'Fiona', 'Maggie', 
  'Amanda', 'Jennifer', 'Hannah', 'Aine', 'Trisha', 'Rune', 'Yuwei', 'Seana', 
  'Alice', 'Sophia', 'Kristi', 'Kathryn', 'Zoe', 'Lola', 'Maddy', 'Aimee', 
  'Savannah']

Table of Contents