Tuples,
Lists, and Dictionaries
Introduction
Your brain still hurting from
the last lesson? Never worry, this
one will require a little less
thought. We're going back to
something simple - variables - but
a little more in depth.
Think about it - variables
store one bit of information. They
may regurgitate (just not on the
carpet...) that information at any
point, and their bit of
information can be changed at any
time. Variables are great at what
they do - storing a piece of
information that may change over
time.
But what if you need to store a
long list of information, which
doesn't change over time? Say, for
example, the names of the months
of the year. Or maybe a long list
of information, that does change
over time? Say, for example, the
names of all your cats. You might
get new cats, some may die, some
may become your dinner (we should
trade recipies!). What about a
phone book? For that you need to
do a bit of referencing - you
would have a list of names, and
attached to each of those names, a
phone number. How would you do
that?
The Solution - Lists, Tuples, and
Dictionaries
For these three problems,
Python uses three different
solutions - Tuples, lists, and
dictionaries:
|
Code Example 1 - creating a
tuple |
months = ('January','February','March','April','May','June',\
'July','August','September','October','November','
December')
|
- Note that the '\' thingy at
the end of sthurlow.comthe first
line carries over that line of
code to the next line. It is
usefull way of making big lines
more readable.
- Technically you don't have
to put those parentheses there
(the '(' and ')' thingies) but
it stops python from getting
things confused.
- You may have spaces after
the commas if you feel it
necessary - it doesn't really
matter.
Python then organises those
values in a handy, numbered index
- starting from zero, in the order
that you entered them in. It would
be organised like this:
|
Table 1 - tuple indicies |
| Index |
Value |
| 0 |
January |
| 1 |
Feb |
| 2 |
Mar |
| 3 |
Apr |
| 4 |
May |
| 5 |
Jun |
| 6 |
Jul |
| 7 |
Aug |
| 8 |
Sep |
| 9 |
Oct |
| 10 |
Nov |
| 11 |
Dec |
And that is tuples! Really
easy...
Lists
Lists are extremely similar to
tuples. Lists are modifiable (or
'mutable', as a programmer may
say), so their values can be
changed. Most of the time we use
lists, not tuples, because we want
to easily change the values of
things if we need to.
Lists are defined very
similarly to tuples. Say you have
FIVE cats, called Tom, Snappy,
Kitty, Jessie and Chester. To put
them in a list, you would do this:
|
Code Example 2 - Creating a
List |
cats = ['Tom', 'Snappy',
'Kitty', 'Jessie', 'Chester']
|
As you see, the code is exactly
the same as a tuple, EXCEPT that
all the values are put between
square brackets, not parentheses.
Again, you don't have to have
spaces after the comma.
You recall values from lists
exactly the same as you do with
tuples. For example, to print the
name of your 3rd cat you would do
this:
|
Code Example 3 - Recalling
items from a list |
print cats[2]
|
You can also recall a range of
examples, like above, for example
- cats[0:2] would recall your 1st
and 2nd cats.
Where lists come into their own
is how they can be modified. To
add a value to a list, you use the
'append()' function. Let's say you
got a new cat called Catherine. To
add her to the list you'd do this:
|
Code Example 4 - Adding items
to a list |
cats.append('Catherine')
|
That's a little weird, isn't it?
I'll explain. That function is in
a funny spot - after a period (the
'.' kind of period, not
otherwise), after the list name.
You'll get to see those things
more in a later lesson. For the
meanwhile, this is the form of the
function that adds a new value to
a list:
|
Code Example 5 - Using the
append function |
#add a new value to the end of
a list:
list_name.append(value-to-add)
#e.g. to add the number 5038
to the list 'numbers':
numbers.append(5038)
|
Clears things up? Good!
Now to a sad situation - Snappy
was shot by a neighbour, and eaten
for their dinner (good on 'em!).
You need to remove him (or her)
from the list. Removing that sorry
cat is an easy task, thankfully,
so you have to wallow in sadness
for as short a time as possible:
|
Code Example 6 - Deleting an
item |
#Remove your 2nd cat, Snappy.
Woe is you.
del cats[1]
|
You've just removed the 2nd cat
in your list - poor old Snappy.
And with that morbid message,
lets move on to...
Dictionaries
Ok, so there is more to life
than the names of your cats. You
need to call your sister, mother,
son, the fruit man, and anyone
else who needs to know that their
favourite cat is dead. For that
you need a telephone book.
Now, the lists we've used above
aren't really suitable for a
telephone book. You need to know a
number based on someone's name -
not the other way around, like
what we did with the cats. In the
examples of months and cats, we
gave the computer a number, and it
gave us a name. This time we want
to give the computer a name, and
it give us a number. For this we
need Dictionaries.
So how do we make a dictionary?
Put away your binding equipment,
it isn't that advanced.
Remember, dictionaries have
keys, and values. In a phone book,
you have people's names, then
their numbers. See a similarity?
When you initially create a
dictionary, it is very much like
making a tuple or list. Tuples
have ( and ) things, lists have [
and ] things. Guess what!
dictionaries have { and } things -
curly braces. Here is an example
below, showing a dictionary with
four phone numbers in it:
|
Code Example 7 - Creating a
dictionary |
#Make the phone book:
phonebook = {'Andrew
Parson':8806336, \
'Emily Everett':6784346,
'Peter Power':7658344, \
'Lewis Lame':1122345}
|
the program would then print
Lewis Lame's number onscreen.
Notice how instead of identifying
the value by a number, like in the
cats and months examples, we
identify the value, using another
value - in this case the person's
name.
Ok, you've created a new phone
book. Now you want to add new
numbers to the book. What do you
do? A very simple line of code:
|
Code Example 8 - Adding
entries to a dictionary |
#Add the person 'Gingerbread
Man' to the phonebook:
phonebook['Gingerbread Man'] =
1234567
# Didn't think I would give
you
# my real number now, would I?
|
ll that line is saying is that
there is a person called
Gingerbread Man in the phone book,
and his number is 1234567. In
other words - the key is
'Gingerbread Man', and the value
is 1234567.
You delete entries in a
dictionary just like in a list.
Let's say Andrew Parson is your
neighbour, and shot your cat. You
never want to talk to him again,
and therefore don't need his
number. Just like in a list, you'd
do this:
|
Code Example 9 - Removing
entries from a dictionary |
del phonebook['Andrew Parson']
|
Again, very easy. the 'del'
operator deletes any function,
variable, or entry in a list or
dictionary (An entry in a
dictionary is just a variable with
a number or text string as a name.
This comes in handy later on.)
remember that append function
that we used with the list? Well,
there are quite a few of those
that can be used with
dictionaries. Below, I will write
you a program, and it will
incorporate some of those
functions in. It will have
comments along the way explaining
what it does.
Type this program into Python
IDLE (you can skip the comments).
Experiment as much as you like
with it. Type it where you see the
lines beginning with >>>
|
Code Example 10 - Functions of
dictionaries |
#A few examples of a
dictionary
#First we define the
dictionary
#it will have nothing in it
this time
ages = {}
#Add a couple of names to the
dictionary
ages['Sue'] = 23
ages['Peter'] = 19
ages['Andrew'] = 78
ages['Karren'] = 45
#Use the function has_key() -
#This function takes this
form:
#function_name.has_key(key-name)
#It returns TRUE
#if the dictionary has
key-name in it
#but returns FALSE if it
doesn't.
#Remember - this is how 'if'
statements work -
#they run if something is true
#and they don't when something
is false.
if ages.has_key('Sue'):
print "Sue is in the
dictionary. She is", \
ages['Sue'], "years old"
else:
print "Sue is not in the
dictionary"
#Use the function keys() -
#This function returns a list
#of all the names of the keys.
#E.g.
print "The following people
are in the dictionary:"
print ages.keys()
#You could use this function
to
#put all the key names in a
list:
keys = ages.keys()
#You can also get a list
#of all the values in a
dictionary.
#You use the values()
function:
print "People are aged the
following:", \
ages.values()
#Put it in a list:
values = ages.values()
#You can sort lists, with the
sort() function
#It will sort all values in a
list
#alphabetically, numerically,
etc...
#You can't sort dictionaries -
#they are in no particular
order
print keys
keys.sort()
print keys
print values
values.sort()
print values
#You can find the number of
entries
#with the len() function:
print "The dictionary has", \
len(ages), "entries in it" |
|