Thanks again. I have a question (see below).
On 26/01/06, Kent Johnson <[EMAIL PROTECTED]> wrote:
Good point, but I have no idea how to do this! Could you show me?
Jon Moore wrote:
> Hi,
>
> I have the following dictionary:
>
> pairs = {"Jon Moore": ["Tony Moore", "Stanley Moore"],
> "Simon Nightingale": ["John Nightingale", "Alan Nightingale"],
> "David Willett": ["Bernard Willet", "Robert Willet"],
> "John Jackson": ["John Jackson", "Peter Jackson"],
> "James Southey": ["Richard Southey", "Paul Southey"],
> "Shaun Forsythe": ["William Forsythe", "Angus Forsythe"],
> "Daniel Geach": ["Mike Geach", "Andy Geach"]}
>
> Where the names represent a son, father and grandfather.
>
> I am trying to add a new term and related definitions to the dictionary,
> but my code does not seem to work:
>
> son = raw_input("Please enter the name of the Son: ")
> if son not in pairs:
> father = raw_input("Who is the Father?: ")
> grandfather = raw_input("What is the Grand Father?: ")
> pairs[son][0] = father
> pairs[son][1] = grandfather
> print "\n", son, ",", father, "and" ,grandfather, "have been
> added."
> else:
> print "\nThat Son already exists!"
>
> The error I get is:
>
> pairs[son][0] = father
> KeyError: 'Steven Bates'
> >>>
>
> Where am I going wrong?
The problem is, when you say
pairs[son][0] = father
pairs[son] does not yet exist. This is on the left side of an
assignment, but it is really an access to pair[son]. It is as if you had
written
temp = pairs[son]
temp[0] = father
You get a KeyError accessing pairs[son].
The solution is to create a new list for the (father, grandfather) pair,
and assign that to pairs[son]:
ancestors = [father, grandfather]
pairs[son] = ancestors
You might want to rethink how you are storing the data. (father,
grandfather) is actually a (son, father) pair so you might want to store
them as another entry in the dictionary. Also two sons could have the
same father and grandfather; with your scheme you will store the
(father, grandfather) pair twice. In general this kind of duplication of
data is better avoided.
Good point, but I have no idea how to do this! Could you show me?
You might also want to Google 'python genealogy'.
Kent
_______________________________________________
Tutor maillist - Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor
--
Best Regards
Jon Moore
_______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor