dictionaries

Steven Bethard steven.bethard at gmail.com
Fri Sep 10 23:04:31 CEST 2004


Zach Shutters <zshutters <at> comcast.net> writes:
> 
> def function1():
>     print "function1"
> 
> def function2():
>     print "function2"
> 
> dict = {"1":function1,"2":function2}
> x = input ("1 or 2?")
> 
> dict[x]()

Right idea, wrong type.  From the docs at:

http://docs.python.org/lib/built-in-funcs.html

] input( [prompt]) 
] 
]      Equivalent to eval(raw_input(prompt)). 

This means that when you use input, it will convert the "1" typed at the 
prompt to the integer 1.  So your code should either be:

>>> d = {1:function1, 2:function2}
>>> x = input("1 or 2? ")
1 or 2? 1
>>> d[x]()
function1
>>>

or

>>> d = {"1":function1, "2":function2}
>>> x = raw_input("1 or 2? ")
1 or 2? 1
>>> d[x]()
function1

You also probably shouldn't name your dictionary 'dict' because then you 
rebind the name 'dict', which is already the builtin 'dict' function.

Steve




More information about the Python-list mailing list