在字典python中选择所有键

2024-09-25 08:42:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用字典编写一个switch case,并从中调用所有函数。但是{key,value}对都被打印出来了:

def addWord():
    print "Add word"

def searchWord():
    print "Search word"

def displayAll():
   print "display all"


#Executing the choice
def switch_choice(choice):
    switcher = {
            1:addWord(),
            2:searchWord(),
            3:displayAll()
    }.get(choice,"Invalid input")


#MAIN
print "Enter your choice"
print "1.Add new word"
print "2.Search for a word"
print "3.Display all words"

choice=input()

switch_choice(choice)

输出-

Enter your choice
1.Add new word    
2.Search for a word
3.Display all words
1
Add word
Search word
display all

谁能告诉我原因吗。你知道吗


Tags: addinputsearchyourdefdisplayallword
1条回答
网友
1楼 · 发布于 2024-09-25 08:42:15

您没有存储函数。您正在存储函数调用的结果。不要调用函数对象,调用dict.get()调用的结果:

switcher = {
    1: addWord,
    2: searchWord,
    3: displayAll,
}.get(choice, lambda: "Invalid input")()

在Python中,函数只是对象,()部分只是一段可以应用于任何表达式的语法;只要表达式生成可调用的东西(比如函数对象),Python就可以处理它。你知道吗

注意,我给了dict.get()方法一个lambda表达式作为默认值;如果choice值不是字典中的键,您仍然需要返回一些可调用的内容。你知道吗

相关问题 更多 >