Ruth Anderson UW CSE 160 Winter 2017

Slides:



Advertisements
Similar presentations
Variables and References in Python. "TAGAGAATTCTA” Objects s Names References >>> s = “TAGAGAATTCTA” >>>
Advertisements

Dictionaries: Keeping track of pairs
An Introduction to Python – Part II Dr. Nancy Warter-Perez.
Data Structures UW CSE 190p Summer >>> xs = range(3) >>> xs = [1,2,3] >>> xs = [‘a’,’b’,’c’] >>> xs = [1, ‘a’, 3] >>> xs = [[1,2,3], [‘a’,’b’,’c’]]
Lecture 23 – Python dictionaries 1 COMPSCI 101 Principles of Programming.
Lilian Blot CORE ELEMENTS COLLECTIONS & REPETITION Lecture 4 Autumn 2014 TPOP 1.
CS 177 Week 11 Recitation Slides 1 1 Dictionaries, Tuples.
Beyond Lists: Other Data Structures CS303E: Elements of Computers and Programming.
Built-in Data Structures in Python An Introduction.
Introduction to Python and programming Ruth Anderson UW CSE 140 Winter
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley C H A P T E R 9 Dictionaries and Sets.
Collections Michael Ernst CSE 190p University of Washington.
14. DICTIONARIES AND SETS Rocky K. C. Chang 17 November 2014 (Based on from Charles Dierbach, Introduction to Computer Science Using Python and Punch and.
Introduction to Computing Using Python Dictionaries: Keeping track of pairs  Class dict  Class tuple.
Dictionaries Ruth Anderson CSE 160 University of Washington 1.
COSC 1306—COMPUTER SCIENCE AND PROGRAMMING PYTHON TUPLES, SETS AND DICTIONARIES Jehan-François Pâris
Dictionaries Ruth Anderson UW CSE 160 Winter
Dictionaries Alexandra Stefan CSE1310 – University of Texas at Arlington.
Indentations makes the scope/block Function definition def print_message (): print “hello” Function usages print_message () hubo.move ()// hubo is a class.
Scientific Programming in Python -- Cheat Sheet
SQL – Python and Databases
10 - Python Dictionary John R. Woodward.
Sharing, mutability, and immutability
Topics Dictionaries Sets Serializing Objects. Topics Dictionaries Sets Serializing Objects.
Python – May 18 Quiz Relatives of the list: Tuple Dictionary Set
Computer Programming Fundamentals
CMSC201 Computer Science I for Majors Lecture 17 – Dictionaries
When to use Tuples instead of Lists
CSc 120 Introduction to Computer Programing II
Introduction to Python and programming
Ruth Anderson University of Washington CSE 160 Spring 2015
List comprehensions (and other shortcuts) UW CSE 160 Winter 2016.
List comprehensions (and other shortcuts) UW CSE 160 Winter 2017.
The Python Data Model UW CSE 190p Summer 2012.
Ruth Anderson CSE 140 University of Washington
Sharing, mutability, and immutability
Ruth Anderson UW CSE 160 Spring 2018
Ruth Anderson UW CSE 160 Spring 2018
Ruth Anderson UW CSE 160 Winter 2017
CISC101 Reminders Quiz 2 this week.
Ruth Anderson University of Washington CSE 160 Spring 2018
Sharing, mutability, and immutability
Ruth Anderson University of Washington CSE 160 Winter 2017
Sharing, mutability, and immutability
List comprehensions (and other shortcuts) UW CSE 160 Spring 2018.
Ruth Anderson UW CSE 140 Winter 2014
Sharing, mutability, and immutability
COSC 1306 COMPUTER SCIENCE AND PROGRAMMING
Ruth Anderson UW CSE 160 Winter 2017
Datatypes in Python (Part II)
Python Tutorial for C Programmer Boontee Kruatrachue Kritawan Siriboon
Topics Dictionaries Sets Serializing Objects. Topics Dictionaries Sets Serializing Objects.
Dictionaries Dictionary: object that stores a collection of data
Sharing, mutability, and immutability
Michael Ernst CSE 140 University of Washington
Michael Ernst CSE 140 University of Washington
Nate Brunelle Today: Dictionaries
6. Dictionaries and sets Rocky K. C. Chang 18 October 2018
(more) Python.
Dictionaries: Keeping track of pairs
CISC101 Reminders Assignment 2 due today.
CHAPTER 4: Lists, Tuples and Dictionaries
Ruth Anderson CSE 160 University of Washington
Ruth Anderson UW CSE 160 Spring 2018
Nate Brunelle Today: Dictionaries
CSE 231 Lab 8.
Winter 2019 CISC101 5/26/2019 CISC101 Reminders
Dictionary.
Introduction to Computer Science
Ruth Anderson UW CSE 160 Winter 2016
Presentation transcript:

Ruth Anderson UW CSE 160 Winter 2017 Dictionaries Ruth Anderson UW CSE 160 Winter 2017

Dictionaries or mappings 5 → 25 7 → 49 6 → 36 5 → 25 7 → 49 6 → 36 A dictionary maps each key to a value Order does not matter Given a key, can look up a value Given a value, cannot look up its key No duplicate keys Two or more keys may map to the same value Keys and values are Python values Keys must be immutable (not a list, set, or dict) Can add key → value mappings to a dictionary Can also remove (less common) 7 → 49 -7 → 49 49 → 7 49 → -7 1783 → “Revolutionary” 1848 → “Mexican” 1865 → “Civil” “Revolutionary” → “Mexican” → “Civil” → 1783 1861 1848 1846 1775 1865 “Revolutionary” → “Mexican” → “Civil” → 1783 1861 1848 1846 1775 1865 “WWI” → 1918 1917 add mapping

Dictionary syntax in Python See in python tutor d = { } d = dict() us_wars_by_end = { 1783: "Revolutionary", 1848: "Mexican", 1865: "Civil" } us_wars_by_name = { "Civil" : [1861, 1865], "Mexican" : [1846, 1848], "Revolutionary" : [1775, 1783] } Syntax just like lists, for accessing and setting: us_wars_by_end[1783]  us_wars_by_end[1783][1:10]  us_wars_by_name["WWI"] = [1917, 1918] Two different ways to create an empty dictionary 1783 → “Revolutionary” 1848 → “Mexican” 1865 → “Civil” “Revolutionary” → “Mexican” → “Civil” → 1783 1861 1848 1846 1775 1865 What are the three questions you want to ask about a data structure? creation, querying, modification “Revolutionary” “evolutionary” us_wars_by_end[1783]  “Revolutionary” us_wars_by_end[1783][1:10]  “evolution” us_wars_by_name["WWI"] = [1917, 1918]

Creating a dictionary See in python tutor “GA” → “Atlanta” “WA” → “Olympia” >>> state_capitals = {"GA" : "Atlanta", "WA": "Olympia" } >>> phonebook = dict() >>> phonebook["Alice"] = "206-555-4455" >>> phonebook["Bob"] = "212-555-2211" >>> atomic_number = {} >>> atomic_number["H"] = 1 >>> atomic_number["Fe"] = 26 >>> atomic_number["Au"] = 79 “Alice” → “206-555-4455” “Bob” → “212-555-1212” “H” → 1 “Fe” → 26 “Au” → 79

Accessing a dictionary See in python tutor Accessing a dictionary “H” → 1 “Fe” → 26 “Au” → 79 >>> atomic_number = {"H":1, "Fe":26, "Au":79} >>> atomic_number["Au"] 79 >>> atomic_number["B"] Traceback (most recent call last): File "<pyshell#102>", line 1, in <module> atomic_number["B"] KeyError: 'B' >>> atomic_number.has_key("B") False >>> atomic_number.keys() ['H', 'Au', 'Fe'] >>> atomic_number.values() [1, 79, 26] >>> atomic_number.items() [('H', 1), ('Au', 79), ('Fe', 26)] Good for iteration (for loops) for key in mymap.keys(): val = mymap[key] … use key and val for key in mymap: for (key,val) in mymap.items():

Iterating through a dictionary See in python tutor Iterating through a dictionary atomic_number = {"H":1, "Fe":26, "Au":79} # Print out all the keys: for element_name in atomic_number.keys(): print element_name # Another way to print out all the keys: for element_name in atomic_number: # Print out all the values: for element_number in atomic_number.values(): print element_number # Print out the keys and the values for (element_name, element_number) in atomic_number.items(): print "name:", element_name, "number:", element_number

Modifying a dictionary See in python tutor Modifying a dictionary us_wars1 = { "Revolutionary" : [1775, 1783], "Mexican" : [1846, 1848], "Civil" : [1861, 1865] } us_wars1["WWI"] = [1917, 1918] # add mapping del us_wars1["Civil"] # remove mapping “Revolutionary” → “Mexican” → “Civil” → 1783 1861 1848 1846 1775 1865 “Revolutionary” → “Mexican” → “Civil” → 1783 1861 1848 1846 1775 1865 “WWI” → 1918 1917 add mapping

Dictionary Exercises What does this do? squares = { 1:1, 2:4, 3:9, 4:16 } squares[3] + squares[3] squares[3 + 3] squares[2] + squares[2] squares[2 + 2] Convert a list to a dictionary: Given [5, 6, 7], produce {5:25, 6:36, 7:49} Reverse key with value in a dictionary: Given {5:25, 6:36, 7:49}, produce {25:5, 36:6, 49:7} d = {} for i in [5, 6, 7]: d[i] = i * i k= {} for i in d.keys(): k[d[i]] = i

Dictionary Exercise (Answers) Convert a list to a dictionary: E.g. Given [5, 6, 7], produce {5:25, 6:36, 7:49} d = {} for i in [5, 6, 7]: # or range(5, 8) d[i] = i * i Reverse key with value in a dictionary: E.g. Given {5:25, 6:36, 7:49}, produce {25:5, 36:6, 49:7} k ={} for i in d.keys(): k[d[i]] = i [HIDE] >>> d = {} >>> for i in range(5, 8): d[i] = i * i >>> k= {} >>> for i in d.keys(): k[d[i]] = i

A list is like a dictionary A list maps an integer to a value The integers must be a continuous range 0..i mylist = ['a', 'b', 'c'] mylist[1]  'b' mylist[3] = 'c' # error! In what ways is a list more convenient than a dictionary? In what ways is a list less convenient than a dictionary?

Not every value is allowed to be a key in a dictionary Keys must be immutable values int, float, bool, string, tuple of immutable types not: list, set, dictionary The dictionary itself is mutable (e.g. we can add and remove elements) Goal: only dictionary operations change the keyset after “mydict[x] = y”, mydict[x]  y if a == b, then mydict[a] == mydict[b] These conditions should hold until mydict is changed Mutable keys can violate these goals