Python:如何重命名字典项并将其用作case语句选项



我在应用程序中使用字典作为case语句。我需要重命名一个字典项,但仍然使用该字典作为大小写语句。为了说明我正在尝试做什么,我创建了这个例子。

def venus():
    print 'Venus'
def mars():
    print 'Mars'
def earth():
    print 'Earth'
def pluto():
    print 'Pluto'
options = { '1': venus, '2': mars, '3': earth}
options['1']()
options['2']()
options['3']()
options['1'] = 'pluto'
options['1']()

如果你运行它会打印出以下内容:

Venus
Mars
Earth
Traceback (most recent call last):
  File "dict.py", line 22, in <module>
    options['1']()
TypeError: 'str' object is not callable

在你问之前,不,我不能只是在字典中添加另一个条目来获取Pluto选项。

如何重命名字典项并将其用作大小写语句选项?

不要将其作为字符串传入。您需要将字典引用更改为对象pluto,这是您的函数。。。而不是string 'pluto'

options['1'] = pluto

为什么要将函数pluto包装在字符串中?

只需按照定义字典时所做的操作即可

options['1'] = pluto #assign the function directly
options['1']() # prints Pluto

您需要添加一个返回"pluto"的函数。

options['1'] = lambda: "pluto"

或者,您可以定义一个函数,将字符串转换为函数

def to_func(s):
    return (lambda: s)
options['1'] = to_func("pluto")

最新更新