【发布时间】:2021-09-29 03:47:35
【问题描述】:
我一直在尝试在字典中存储然后调用字符串和/或函数。
第一个例子
def mainfunction():
dict = {
'x' : secondfunc,
'y' : 'hello world'
}
while True :
inpt = input('@')
dict[inpt]()
def secondfunc():
print('hi world')
mainfunction()
这仅在我输入键“x”时才有效。 如果我尝试输入键“y”,我会收到此错误。
TypeError: 'str' object is not callable
另外,这个方法的问题是它不能做出默认答案。
第二个例子
def mainfunction():
dict = {
'x' : secondfunc,
'y' : 'hello world'
}
while True:
inpt = input('@')
z = dict.get(inpt, 'Default text')
print(z)
def secondfunc():
print('hi world')
mainfunction()
此方法适用于键“y”,但对于键“x”,它会打印以下内容:
<function secondfunc at 0x7ab4496dc0>
我试图让它无论我输入哪个值,它都会打印一个默认值、打印一个字符串或执行一个函数。一切都取决于按键输入。
最后一个例子
我发现的唯一解决方案是使用if 语句。
def mainfunction():
dict = {
'x' : secondfunc,
}
dict2 = {
'y' : 'hello world'
}
while True:
inpt = input('@')
z = dict2.get(inpt, 'Default text')
if inpt == 'x':
dict[inpt]()
else:
print(z)
def secondfunc():
print('hi world')
mainfunction()
此解决方案需要的代码比我希望的要多,而且它还需要特定于给定字典的if 语句,这需要更多时间。
没有更好的方法吗?
【问题讨论】:
标签: python string function dictionary