2017-02-16 44 views
-1

我正在创建一个聪明的Chatbot。然而,这部分信息无关紧要。我想要做的就是打电话给字典内的指令 - 我会告诉你:如何在Python字典中包含命令

dictionary = ["command1": "print("I just called command1!")] 

dictionary["command1"] 

有点像这样的。显然你不能那样做。我希望能够有一个不同命令的字典,当你使用字典时将运行[whatever_command你want_in_here]

你明白我的意思吗?

我可以使用函数,但很明显这将占用大量的空间和大量的代码,当我的Chatbot中有太多的响应时我无法承受。

我真的需要知道如何以简单的方式做到这一点。

请注意。 :)

+0

“这将占用大量的空间和大量的代码,当我的Chatbot中有太多的响应时,我承受不起。如果您在过去的十年中制造了硬盘驱动器,那么您可能有足够的空间来容纳数百万次的响应。 – Kevin

回答

3

存储指令为匿名函数:

dictionary = { 
    "command1": lambda: print("I just called command1!"), 
    "command2": lambda: print("I just called command2!") 
} 

command = input('Enter command: ') 
dictionary[command]() 
+0

谢谢,这非常有帮助。唯一的问题是,当我尝试打印(字典[命令])是它打印它,然后在它之后重复None,就像它还搜索除了lambda之外的其他东西... –

+1

@ShabbyCat,因为字典条目**是* *打印电话。你不应该添加另一个打印;并且每一个动作都可以取代印刷品 – Uriel

2

如果你只是希望打印字符串,你好得多做这样的事情:

dictionary = {"command1": "I just called command1!"} 
print(dictionary["command1"]) 

但如果你需要为了解析实际功能,你可以像@Uriel Eli在另一个答案中所说的那样使用lambda表达式。

mylist = [] 
dictionary = {"command1": lambda: print("I just called command1"), "command2": lambda: mylist.append("Here's an appended string!")} 

dictionary["command1"]() 
dictionary["command2"]()