cs 105 topic 12 dictionaries
play

CS 105: TOPIC 12 DICTIONARIES Max Fowler (Computer Science) - PowerPoint PPT Presentation

CS 105: TOPIC 12 DICTIONARIES Max Fowler (Computer Science) https://pages.github-dev.cs.illinois.edu/cs-105/web/ JULY 26, 2020 Week 7 Video Series Topics Dictionaries A reminder on Key vs Value Advanced dictionary use


  1. CS 105: TOPIC 12 – DICTIONARIES Max Fowler (Computer Science) https://pages.github-dev.cs.illinois.edu/cs-105/web/ JULY 26, 2020

  2. Week 7 Video Series Topics  Dictionaries  A reminder on Key vs Value  Advanced dictionary use – histograms and get  Advanced dictionary use – update

  3. Dictionary – Key vs Value Reminder

  4. A reminder of dictionary structure  You’ve been using dictionaries for a while now.  animals_on_island = {“puffin”:20, “alpaca”:25, “cats”:10}  Key – animals  Value – The population of that animal

  5. Print the total number of animals on the island  Effectively, sum the values in the dictionary.  Can we just do….: sv = 0 for val in animals_on_island: sv+= val

  6. Variable names aren’t magic  ‘ val ’ has no meaning to Python – it is just an identifier for a variable  To get access to the values, we need to do one of three things:  1) Use the keys  2) Use .values()  3) Use .items()

  7. Approach one – using keys to access values def animal_pop(animals_on_island): total_pop = 0 for animal in animals_on_island: total_pop += animals_on_island[animal] return total_pop

  8. Approach two – using .values()  .values() is a function that lets us get the values in a sequence def animal_pop2(animals_on_island): total_pop = 0 for pop in animals_on_island.values(): total_pop += pop return total_pop

  9. Approach three – using .items()  .items() gives us both the key AND the value for each pair – so we need two variables def animal_pop3(animals_on_island): total_pop = 0 for animal, pop in animals_on_island.items(): total_pop += pop return total_pop

  10. Video question  Assuming my_list is a list of strings and my_dict is a dictionary with int keys and string values, what does this code do? s = 0 for key, val in my_dict.items(): if val in my_list: s += key print(s)

  11. Advanced Dictionary – get

  12. Dictionaries – common paradigm  Given a list/file of something, make a histogram of the items in the list  What’s a histogram? A distribution  A dictionary of values and their counts

  13. Problem – updating counts.  Given histogram = {“apple”:5, “pineapple”:2”}  histogram[“apple”] += 1 #Updates to six  histogram[“orange”] +=1  #A key error – orange doesn’t exist yet!!!

  14. Getting around the key issue – long way histogram = {} for item in a_list: if item in histogram: histogram[item] += 1 else: histogram[item] = 1

  15. Dictionaries - get  get is a method of dictionaries that simplifies this process  How does get work?  a_dictionary.get(key, default)  If key exists, get the value  If the key is not in the dictionary, use the default value provided

  16. Simplified down using get histogram = {} for item in a_list: histogram[item] = histogram.get(item, 0) + 1  Notice…  We use 0 as the default, so we can always “+1”  No more if statement!!  No += -> have to use regular assignment

  17. Video question – what does this code do? def fn(other_dict, data_dict): for key in data_dict: other_dict[key] = other_dict.get(key,0) + data_dict[key]

  18. Advanced Dictionary – update

  19. Dictionary updates  In the last video question, we updated a dictionary using the key-value pairs from another  Dictionaries have a method for that, but there is a catch… update()

  20. update  a_dict.update(another_dict)  For each key in another_dict …  If the key does not exist in a_dict, add it  If the key DOES exist in a_dict, CHANGE THE VALUE

  21. Use cases for updating dictionaries  Use a loop and get IF  You want to add/subtract/somehow combine values for existing keys  Use update if  You want to update the dictionary, erasing old data, OR the two dictionaries do not share any keys

  22. Video question  Is this best solved with the use of .update() or with a loop and .get()?  “Write a function which takes two dictionaries – old and new. It should use the new dictionary to update the keys in old, replacing any existing values and adding any new keys”

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend