200 likes | 336 Views
Lesson 16 Dictionaries. Python Mini-Course University of Oklahoma Department of Psychology. Lesson objectives. Describe the characteristics of the dictionary data structure in Python Perform basic operations with dictionaries including creation, copying, updating, and traversing
E N D
Lesson 16Dictionaries Python Mini-Course University of Oklahoma Department of Psychology Python Mini-Course: Lesson 16
Lesson objectives • Describe the characteristics of the dictionary data structure in Python • Perform basic operations with dictionaries including creation, copying, updating, and traversing • Use dictionaries in functions Python Mini-Course: Lesson 16
The dictionary data structure • In Python, a dictionary is mapping between a set of indices (keys) and a set of values • The items in a dictionary are key-value pairs Python Mini-Course: Lesson 16
The dictionary data structure • Keys can be any Python data type • Because keys are used for indexing, they should be immutable • Values can be any Python data type • Values can be mutable or immutable Python Mini-Course: Lesson 16
Creating a dictionary eng2sp = dict() print eng2sp eng2sp['one'] = 'uno' print eng2sp eng2sp['two'] = 'dos' print eng2sp Python Mini-Course: Lesson 16
Creating a dictionary eng2sp = {'one': 'uno', 'two': 'dos', 'three': 'tres'} print eng2sp • In general, the order of items in a dictionary is unpredictable • Dictionaries are indexed by keys, not integers Python Mini-Course: Lesson 16
Dictionary indexing print eng2sp['three'] print eng2sp['five'] * If the index is not a key in the dictionary, Python raises an exception Python Mini-Course: Lesson 16
Dictionary indexing if 'five' in eng2sp: print eng2sp['five'] print eng2sp.get('five') Python Mini-Course: Lesson 16
The in operator • Note that the in operator works differently for dictionaries than for other sequences • For offset indexed sequences (strings, lists, tuples), x in y checks to see whether x is an item in the sequence • For dictionaries, x in y checks to see whether x is a key in the dictionary Python Mini-Course: Lesson 16
Keys and values • The keys method returns a list of the keys in a dictionary print eng2sp.keys() • The values method returns a list of the values print eng2sp.values() Python Mini-Course: Lesson 16
Keys and values • The items method returns a list of tuple pairs of the key-value pairs in a dictionary print eng2sp.items() Python Mini-Course: Lesson 16
Example: histogram.py def histogram(seq): d = dict() for element in seq: if element not in d: d[element] = 1 else: d[element] += 1 return d h = histogram('brontosaurus') print h Python Mini-Course: Lesson 16
Example: histogram2.py Add the following code to histogram.py: def print_hist(hist): for key in hist: print key, hist[key] h = histogram('brontosaurus') print_hist(h) Python Mini-Course: Lesson 16
Example: histogram2.py Change the print_hist function: def print_hist(hist): for key, value in hist: print key, value h = histogram('brontosaurus') print_hist(h) Python Mini-Course: Lesson 16
Sorting the keys Change the print_hist function: def print_hist(hist): keys = hist.keys() keys.sort() for key in keys: print key, hist[key] h = histogram('brontosaurus') print_hist(h) Python Mini-Course: Lesson 16
Using lists as values: invert.py • Add the following code to histogram.py: def invert_dict(d): inv = dict() for key in d: val = d[key] if val not in inv: inv[val] = [key] else: inv[val].append(key) return inv Python Mini-Course: Lesson 16
Using lists as values: invert.py • Add the following code to histogram.py: hist = histogram('parrot') print hist inverted = invert_dict(hist) print inverted Python Mini-Course: Lesson 16
Using tuples as keys: troupe.py troupe = {('Cleese', 'John'): [1,2,3], ('Chapman', 'Graham'): [4,5,6], ('Idle', 'Eric'): [7,8,9], ('Jones', 'Terry'): [10,11,12], ('Gilliam', 'Terry'): [13,14,15,16,17,18], ('Palin', 'Michael'): [19,20]} for last, first in troupe: print first, last, troupe[last, first] Python Mini-Course: Lesson 16
Next session • Handling program errors (exceptions) • Reading and writing data files • Sharing data with other programs (Excel, SAS, etc.) Python Mini-Course: Lesson 16
Suggested exercises • Exercise 12.4 • The Case Study in chapter 13 Python Mini-Course: Lesson 16