objec ves
play

Objec(ves Dic(onaries March 14, 2018 Sprenkle - CSCI111 1 Review - PDF document

Objec(ves Dic(onaries March 14, 2018 Sprenkle - CSCI111 1 Review What are the benefits of modules? Pre Lab 8 Chapter 6.8: Using a main func(on Lessons learned about files? Lessons learned about breaking problems down?


  1. Objec(ves • Dic(onaries March 14, 2018 Sprenkle - CSCI111 1 Review • What are the benefits of modules? Ø Pre Lab 8 – Chapter 6.8: Using a main func(on • Lessons learned about files? • Lessons learned about breaking problems down? • How would your Caesar Cipher code need to change for encoding a much larger file? March 14, 2018 Sprenkle - CSCI111 2 1

  2. LOOKUP ALTERNATIVES March 14, 2018 Sprenkle - CSCI111 3 List/String Lookup • How do we “lookup” a value in a list? • Answer: Ø By its index/posi(on • Requires: Ø Knowing the index where a value is March 14, 2018 Sprenkle - CSCI111 4 2

  3. Alterna(ve Lookup • Alterna(ve: look up something by its key Ø Example: When I lookup my friend’s phone number in my contacts, I don’t know that the number is at posi(on X in my contacts. I can look up my friend’s number by her name . Ø Have a fast way to figure out “given this key, what is the value associated with it?” • This type of data structure is known as a dic$onary in Python Ø Maps a key to a value Ø Contacts’ key: “Friend’s name”, value: phone number March 14, 2018 Sprenkle - CSCI111 5 Examples of Dic(onaries Dic9onary Keys Values Dictionary Textbook’s index Cookbook URL (Uniform Resource Locator) • Any other things we’ve done/used in class? March 14, 2018 Sprenkle - CSCI111 6 3

  4. Examples of Dic(onaries Dic9onary Keys Values Dictionary Word Definition Textbook’s index Keyword Page number Cookbook Food type Recipes URL (Uniform URL Web page Resource Locator) • Any other things we’ve done/used in class? March 14, 2018 Sprenkle - CSCI111 7 Examples of Dic(onaries • Real-world: Ø Dic(onary Ø Textbook’s index Ø Cookbook Ø URL (Uniform Resource Locator) • Examples from class Ø Variable name à value Ø Func(on name à func(on defini(on Ø ASCII value à character March 14, 2018 Sprenkle - CSCI111 8 4

  5. Example: A Textbook’s Index Values "integer" 20 Lots of empty "list" 60 space to add new values Keys "string" 45 Keys are not in any order "float" 25 March 14, 2018 Sprenkle - CSCI111 9 A Textbook’s Index Values " integer " 20 " list " 60 Keys " string " 45 - Not in alphabetical order - Not in order added to dictionary - Lots of space " float " 25 March 14, 2018 Sprenkle - CSCI111 10 5

  6. Dic(onaries in Python • Map keys to values Ø Keys are probably not alphabe(zed Ø Mappings are from one key to one value • Keys are unique , Values are not necessarily unique Ø Example: student id à last name • Keys must be immutable (numbers, strings) • Similar to Hashtables/Hashmaps in other languages How would we handle if there is more than one value for a given key? March 14, 2018 Sprenkle - CSCI111 11 Crea(ng Dic(onaries in Python Syntax: {<key>:<value>, …, <key>:<value>} empty = {} {} ascii = { { 'a':97, 'b':98, 'c':99, …, 'z':122 } March 14, 2018 Sprenkle - CSCI111 12 6

  7. Dic(onary Opera(ons Indexing <dict>[<key>] Length (# of keys) len(<dict>) for for <key> in in <dict>: Itera9on <key> in in <dict> Membership del <dict>[<key>] Dele9on Unlike strings and lists, doesn’t make sense to do slicing, concatenation, repetition for dictionaries March 14, 2018 Sprenkle - CSCI111 13 Dic(onary Methods Method Name Func9onality <dict>.clear() Remove all items from dic(onary Returns a copy of dic(onary’s keys (a set-like <dict>.keys() object) Returns a copy of dic(onary’s values (a set- <dict>.values() like object) <dict>.get( x 
 Returns <dict>[x] if x is a key; [, default]) Otherwise, returns None (or default value) March 14, 2018 Sprenkle - CSCI111 14 7

  8. Accessing Values Using Keys • Syntax: <dictionary>[<key>] • Examples: ascii['z'] contacts['friendname'] • KeyError KeyError if key is not in dic(onary Ø Run(me error; exits program March 14, 2018 Sprenkle - CSCI111 15 Accessing Values Using get get Method • <dict>.get( x [, default ]) Ø Returns <dict>[ x ] if x is a key; Otherwise, returns None (or default value) ascii.get('z') directory.get('friendname') • If no mapping, None is returned instead of KeyError None KeyError March 14, 2018 Sprenkle - CSCI111 16 8

  9. Accessing Values • Typically, you will check if dic(onary has a key before trying to access the key if if 'friend' in in contacts: number = contacts['friend'] Know mapping exists before trying to access • Or handle if get returns default number = contacts.get('friend') if number is if is None: No phone number exists # do something … March 14, 2018 Sprenkle - CSCI111 17 Recall: Special Value None None • Special value we can use Ø E.g., Return value from func(on when there is an error • Similar to null null in Java • If you execute list = list.sort() print(list) Ø Prints None because list.sort() does not return anything March 14, 2018 Sprenkle - CSCI111 18 9

  10. Example Using None None # returns the lowercase letter translated by the key. # If letter is not a lowercase letter, returns None def translateLetter( letter, key ): def if letter < 'a' or letter > 'z': if return None return #As usual … # example use encLetter = translateLetter(char, key) if if encLetter is is None: print("Error in message: ", char) March 14, 2018 Sprenkle - CSCI111 19 Inser(ng Key-Value Pairs • Syntax: <dictionary>[<key>] = <value> • ascii['a'] = 97 Ø Creates new mapping of 'a' à 97 ascii_dictionary.py March 14, 2018 Sprenkle - CSCI111 20 10

  11. Textbook’s Index Values bookindex["dictionary"]=58 " integer " 20 " list " 60 Keys " string " 45 " float " 25 March 14, 2018 Sprenkle - CSCI111 21 Textbook’s Index Values bookindex["dictionary"]=58 " integer " 20 " list " 60 Keys " string " 45 "dic(onary" 58 " float " 25 March 14, 2018 Sprenkle - CSCI111 22 11

  12. Adding/Modifying Key-Value Pairs • Syntax: <dictionary>[<key>] = <value> • directory['registrar'] = 8455 Ø Adds mapping for 'registrar' to 8455 OR Ø Modifies old entry if it existed to 8455 March 14, 2018 Sprenkle - CSCI111 23 Methods keys() and values() • Don’t actually return a list object • But can be used similarly to a list • If you want to make them into a list: keys = list(mydict.keys()) March 14, 2018 Sprenkle - CSCI111 24 12

  13. using_dictionary.py Using Dic(onaries • Demonstrate lots of opera(ons, methods, etc. in using dic(onaries March 14, 2018 Sprenkle - CSCI111 25 Problem years_dictionary.py • Part 1: Ø Given a file of the form • <firstname> <classyear> Ø Goal: I want to quickly find out what a student’s class is • How do we want to model the data? • What is the key? What is the value? • How to display the mapping in a prery way? • What order is the data printed in? • Part 2: Ø Prompt user for the first name of the student Ø Display the student’s gradua(on year Part 3: Repeat Part 2 March 14, 2018 Sprenkle - CSCI111 26 13

  14. Algorithm to Problem • Create an empty dic(onary • Read in the file line by line Ø Split the line Ø From the split, get the last name and the year Ø Add a mapping of the last name to the year in the dic(onary • (accumulate the data in the dic(onary) • Process the data in the dic(onary, e.g., Ø Display it, in sorted order Ø Get user input to get answers March 14, 2018 Sprenkle - CSCI111 27 Practice Modify Last Problem • Modify previous program to show the student’s expected gradua(on year years_dictionary2.py March 14, 2018 Sprenkle - CSCI111 28 14

  15. Looking Ahead • Lab 8 due Friday • Cryptocurrencies due Friday March 14, 2018 Sprenkle - CSCI111 29 15

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