Download Dictionaries - The University of Oklahoma

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

B-tree wikipedia , lookup

Comparison of programming languages (associative array) wikipedia , lookup

Transcript
Lesson 16
Dictionaries
Python Mini-Course
University of Oklahoma
Department of Psychology
1
Python Mini-Course: Lesson 16
5/10/09
Lesson objectives
1. Describe the characteristics of the
dictionary data structure in Python
2. Perform basic operations with
dictionaries including creation,
copying, updating, and traversing
3. Use dictionaries in functions
2
Python Mini-Course: Lesson 16
5/10/09
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
3
Python Mini-Course: Lesson 16
5/10/09
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
4
Python Mini-Course: Lesson 16
5/10/09
Creating a dictionary
eng2sp = dict()
print eng2sp
eng2sp['one'] = 'uno'
print eng2sp
eng2sp['two'] = 'dos'
print eng2sp
5
Python Mini-Course: Lesson 16
5/10/09
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
6
Python Mini-Course: Lesson 16
5/10/09
Dictionary indexing
print eng2sp['three']
print eng2sp['five']
* If the index is not a key in the
dictionary, Python raises an exception
7
Python Mini-Course: Lesson 16
5/10/09
Dictionary indexing
if 'five' in eng2sp:
print eng2sp['five']
print eng2sp.get('five')
8
Python Mini-Course: Lesson 16
5/10/09
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
9
Python Mini-Course: Lesson 16
5/10/09
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()
10
Python Mini-Course: Lesson 16
5/10/09
Keys and values
 The items method returns a list of
tuple pairs of the key-value pairs in a
dictionary
print eng2sp.items()
11
Python Mini-Course: Lesson 16
5/10/09
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
12
Python Mini-Course: Lesson 16
5/10/09
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)
13
Python Mini-Course: Lesson 16
5/10/09
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)
14
Python Mini-Course: Lesson 16
5/10/09
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)
15
Python Mini-Course: Lesson 16
5/10/09
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
16
Python Mini-Course: Lesson 16
5/10/09
Using lists as values: invert.py
 Add the following code to histogram.py:
hist = histogram('parrot')
print hist
inverted = invert_dict(hist)
print inverted
17
Python Mini-Course: Lesson 16
5/10/09
Using tuples as keys: troupe.py
troupe = {('Cleese', 'John'):
('Chapman', 'Graham'):
('Idle', 'Eric'):
('Jones', 'Terry'):
('Gilliam', 'Terry'):
('Palin', 'Michael'):
[1,2,3],
[4,5,6],
[7,8,9],
[10,11,12],
[13,14,15,16,17,18],
[19,20]}
for last, first in troupe:
print first, last, troupe[last, first]
18
Python Mini-Course: Lesson 16
5/10/09
Next session
 Handling program errors
(exceptions)
 Reading and writing data files
 Sharing data with other programs
(Excel, SAS, etc.)
19
Python Mini-Course: Lesson 16
5/10/09
Suggested exercises
 Exercise 12.4
 The Case Study in chapter 13
20
Python Mini-Course: Lesson 16
5/10/09