2017-02-16 67 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"]()