[Tutor] if value not in dictionary, do a?

Hugo Arts hugo.yoshi at gmail.com
Fri Mar 25 13:13:44 CET 2011


On Fri, Mar 25, 2011 at 12:52 PM, Robert Sjoblom
<robert.sjoblom at gmail.com> wrote:
> Hi again, list! A quick question about dictionary behaviour. I have a
> dictionary of keys, and the user should be able to enter values into
> said dictionary. My idea was this:
>
> def addData(key, value):
>    dictionary[key] += int(value)
>    return None
>
> dictionary = {"a":0, "b":0, "c":0, "d":0}
>
> for key in dictionary:
>    a = input("Enter key: ")
>    b = int(input("Enter value: "))
>    try:
>        addData(a, b)
>    except:
>        continue
>

Why are you asking for the user to enter a key? you're iterating over
all keys in the dictionary, so there's no need to ask the user for
keys, you already know them. Why not do this:

b = int(input("Enter value for key %s: " % key))
dictionary[key] = b

This way you can be sure a value is entered for every key, and no key
is entered twice. You'll still need to check the user doesn't just
enter 0 though.

Another few points:
* you don't ave to add return None in that function. If you get to the
end of a function and there's no return statement, None is
automatically returned.
* don't use a blank except. *ever*. If you really want to catch
everything, do "except Exception:" otherwise, catch what you expect to
be thrown in this case, "except KeyError"

Hugo


More information about the Tutor mailing list