Follow us on Twitter!
Become the change you seek in the world. - Gandhi
Thursday, April 24, 2014
Navigation
Home
HellBoundHackers Main:
HellBoundHackers Find:
HellBoundHackers Information:
Learn
Communicate
Submit
Shop
Challenges
HellBoundHackers Exploit:
HellBoundHackers Programming:
HellBoundHackers Think:
HellBoundHackers Track:
HellBoundHackers Patch:
HellBoundHackers Other:
HellBoundHackers Need Help?
Other
Members Online
Total Online: 22
Guests Online: 20
Members Online: 2

Registered Members: 82886
Newest Member: The Slummy
Latest Articles

Python lesson 3: (More) Data Structures

Arrow Image Dealing with dictionaries,



Python Lesson 3: (More) Data Structures.

Last time I discussed list and tuples (known as arrays in other languages), and strings.

Lists and tuples come under the heading of indexed arrays, in that the only reference to an object in it is it's position in the list. An associative array in contrast has a 'key' by which the other objects are known. This is known in Python as a dictionary.
They are defined thus:
myDict = {} OR
myDict = dict()

To add values to a dictionary, just assign it as you would a list:
myDict['key'] = "value"

To create a dictionary with some preexisting values:
userPass = {'Richo' : 'richo\'s pass', "some key": "some value"}

There are a few dict methods you will need at first (this is an extract of http://docs.pytho. . .pping.html)
len(a) the number of items in a
del a[k] remove a[k] from a
a.items() a copy of a's list of (key, value) pairs
a.keys() a copy of a's list of keys
a.values() a copy of a's list of values
a.get(k) a safe way to do a[k], won't throw exceptions if k not in a

So, onto the project for today. We're coding a phone book manager. It doesn't have support for saving to file (tune in later tonight for that one!) but it does have some rather spiffy dictionary usage.
I'd like to add here that some things I've done in a different way to last time. One of Python's key strengths is the way that there's always 2 ways to achieve something (and generally heaps more!).




#!/usr/lib/python
def print_menu(): ## again, putting the menu in a function
[tab]print '1. Print Phone Numbers'
[tab]print '2. Add a Phone Number'
[tab]print '3. Remove a Phone Number'
[tab]print '4. Lookup a Phone Number'
[tab]print '5. Quit'
numbers = {} ## initiallise our phone book
menu_choice = 0
print_menu()
while menu_choice != 5:
[tab]menu_choice = input("Type a number (1-5):")
[tab]if menu_choice == 1:
[tab][tab]print "Telephone Numbers:"
[tab][tab]for x in numbers.keys(): ## in our book, the keys will be representative of names
[tab][tab][tab]print "Name: %s \tNumber: %s" % (x, numbers[x]) ## using % again, also \t is a tab, so they'll line up
[tab][tab]print ## whitespace == neat presentation
[tab]elif menu_choice == 2:
[tab][tab]print "Add name and number"
[tab][tab]name = raw_input("Name:")
[tab][tab]phone = raw_input("Number:") ## we'll use raw_input for the number as it may have a +61 prefix or something
[tab][tab]numbers[name] = phone
[tab]elif menu_choice == 3:
[tab][tab]print "Remove Name and Number"
[tab][tab]name = raw_input("Name:")
[tab][tab]if numbers.has_key(name): ## simple test to be sure we don't throw any exceptions
[tab][tab][tab]del numbers[name]
[tab][tab]else:
[tab][tab][tab]print name, "was not found"
[tab]elif menu_choice == 4:
[tab][tab]print "Lookup Number" ## here is where i might add to this project in the regex section
[tab][tab]name = raw_input("Name:")
[tab][tab]if numbers.has_key(name):
[tab][tab][tab]print "The Number is",numbers[name]
[tab][tab]else:
[tab][tab][tab]print name,"was not found"
[tab]elif menu_choice != 5: ## if the choice isn't 1-5 print the menu, else continue and exit
[tab][tab]print_menu()
test = raw_input("Press return to quit")

So there you have it. The comments are actually seeming rather lacking, hit me up in the comments if you need more I'm happy to go back over them.
I think this project is one I'll keep using in these articles, adding database integration, file support, regex searching for users etc.

Peace.

Comments

netfishon May 21 2007 - 07:08:13
data structure knowledge is an important component to a coder.
Post Comment

Sorry.

You must have completed the challenge Basic 1 and have 100 points or more, to be able to post.