Are there other major issues between the (lists and dicts) that would affect there uses?
Dictionaries are my current favorite data-type, for the simple reason that they allow you to express the types of coding thoughts that you want without having to keep careful track of indices.
Here's how I teach dictionaries: dictionaries are essentially lists whose indices are anything you want, instead of integers.
This is the ugly way, using lists:
# my hero generator
attrs = []
attrs[0] = random.randint(1,20) # strength
attrs[1] = random.randint(1,20) # wisdom
attrs[2] = random.randint(1,20) # dexterity
attrs[3] = random.randint(1,20) # intelligence
Any time I want to access strength, I have to remember -- or my code has to look up in a separate list -- the fact that strength is attrs[0]. Yuck, and quite error-prone.
With dictionaries, I can just do this:
# my hero generator
attrs = {}
attrs['str'] = random.randint(1,20)
attrs['wis'] = random.randint(1,20)
attrs['dex'] = random.randint(1,20)
attrs['int'] = random.randint(1,20)
now, if I want to know the strength of my character, I don't have to remember which index the 'str' attribute is ... I just ask,
print attrs['str']
15
and it's there. The dictionary allows me to encapsulate the 'looking up' details so that I can think about the big picture. Result: dramatic reduction in coding errors. Very cool.
Jeff