Beginning Question about Python functions, parameters...

Peter Otten __peter__ at web.de
Tue Nov 24 14:11:58 CET 2009


Terry Reedy wrote:

> astral orange wrote:
> 
>> As far as the program. I did add print statements such as print
>> (MyNames) and got back:
>> 
>> {'middle': {}, 'last': {'Smith': ['John Larry Smith']}, 'first': {}}
> 
> Hmmm, as I understood the code, either that should be ... 'last': {} ...
> before the first store(), as you seem to be thinking below, or after the
> first store(),
> 
> {'middle': {'Larry': ['John Larry Smith'],
>   'last':   {'Smith': ['John Larry Smith'],
>   'first':  {'John' " ['John Larry Smith']}
> 
> or the same with [['John','Larry','Smith']] for each entry (do not
> remember exactly what was stored. Maybe a typo.

That's a bug in the store() function

# as posted
def store(data, full_name):
    names = full_name.split()
    if len(names) == 2: names.insert(1, '')
    labels = 'first', 'middle', 'last'
    for label, name in zip(labels, names):
        people = lookup(data, label, name)
    if people:
        people.append(full_name)
    else:
        data[label][name] = [full_name]

# what was probably intended
def store(data, full_name):
    names = full_name.split()
    if len(names) == 2: names.insert(1, '')
    labels = 'first', 'middle', 'last'
    for label, name in zip(labels, names):
        people = lookup(data, label, name)
        if people:
            people.append(full_name)
        else:
            data[label][name] = [full_name]


Peter




More information about the Python-list mailing list