Sunday, May 19, 2013

Python Lists, Tuples, and Dictionaries


  • Lists are what they seem - a list of values. Each one of them is numbered, starting from zero - the first one is numbered zero, the second 1, the third 2, etc. You can remove values from the list, and add new values to the end. Example: Your many cats' names.
  • Tuples are just like lists, but you can't change their values. The values that you give it first up, are the values that you are stuck with for the rest of the program. Again, each value is numbered starting from zero, for easy reference. Example: the names of the months of the year.
  • Dictionaries are similar to what their name suggests - a dictionary. In a dictionary, you have an 'index' of words, and for each of them a definition. In Python, the word is called a 'key', and the definition a 'value'. The values in a dictionary aren't numbered - they are similar to what their name suggests - a dictionary. In a dictionary, you have an 'index' of words, and for each of them a definition. 

Tuples 

Tuples are pretty easy to make. You give your tuple a name, then after that the list of values it will carry. For example, the months of the year:

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 the first line carries over that line of code to the next line. It is useful 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
IndexValue
0January
1February
2March
3April
4May
5June
6July
7August
8September
9October
10November
11December
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.

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')
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)
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 
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.

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?
All 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']
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.
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"

No comments:

Post a Comment