Tuples and Other Python Object Types (
Page 1 of 5 )
In this conclusion to a four-part article series on Python object types, we will finish our discussion of dictionaries, move on to tuples, and cover related material. This article is excerpted from chapter four of the book Learning Python, Third Edition, written by Mark Lutz (O'Reilly, 2008; ISBN: 0596513984). Copyright © 2008 O'Reilly Media, Inc. All rights reserved. Used with permission from the publisher. Available from booksellers or direct from O'Reilly Media.
Missing Keys: if Tests
One other note about dictionaries before we move on. Although we can assign to a new key to expand a dictionary, fetching a nonexistent key is still a mistake:
>>> D
{'a': 1, 'c': 3, 'b': 2}
>>> D['e'] = 99 # Assigning new keys grows dictionaries
>>> D
{'a': 1, 'c': 3, 'b': 2,
'e': 99}
>>> D['f'] # Referencing one is an error
...error text omitted...
KeyError: 'f'
This is what we want—it’s usually a programming error to fetch something that isn’t really there. But, in some generic programs, we can’t always know what keys will be present when we write our code. How do we handle such cases and avoid the errors? One trick here is to test ahead of time. The dictionary
has_key
method allows us to query the existence of a key and branch on the result with a Python
if
statement:
>>> D.has_key('f')
False
>>> if not D.has_key('f'):
print 'missing'
missing
I’ll have much more to say about the if statement and statement syntax in general later in this book, but the form we’re using here is straightforward: it consists of the word if, followed by an expression that is interpreted as a true or false result, followed by a block of code to run if the test is true. In its full form, the if statement can also have an else clause for a default case, and one or more elif
(else if) clauses for other tests. It’s the main selection tool in Python, and it’s the way we code logic in our scripts.
There are other ways to create dictionaries and avoid accessing a nonexistent dictionary key (including the
get
method; the
in
membership expression; and the
try
statement, a tool we’ll first meet in Chapter 10 that catches and recovers from exceptions altogether), but we’ll save the details on those until a later chapter. Now, let’s move on to tuples.