2017-02-16 4 views
-1

私はスマートなChatbotを作成しています。しかしながら、その情報の部分は無関係です。私がしようとしていることは、辞書内の指示を呼び出すことです - 私はあなたを見せます:どのようにコマンドをPython辞書に含めるか

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

dictionary["command1"] 

このような並べ替えのようなものです。明らかにあなたはそれをすることはできません。私はあなたが辞書を使用するときに実行される異なるコマンドの辞書を持つことができるようにしたいです

私は何を意味するのですか?

私は関数を使うことができましたが、それは私のChatbotに非常に多くの応答があるときに余裕がないたくさんのスペースと多くのコードを取ることになります。

私は本当に簡単な方法でこれを行う方法を知る必要があります。

Pls。無名関数として:)

+0

"私のチャットボットには非常に多くの回答があると余裕がないくらいたくさんのスペースと多くのコードを使います。"過去10年間でハードドライブを作っていれば、おそらく何百万という応答を保存するのに十分なスペースがあります。 – Kevin

答えて

3

ストア命令:

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

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

ありがとうございました、それはとても役に立ちました。唯一の問題は、印刷(辞書[コマンド])を試してみると、それはそれを印刷し、その後にそれを繰り返すということです。ラムダとは別のものを検索したようなものです... –

+1

辞書エントリ**は* * printの呼び出し。別のプリントを追加しないでください。すべてのアクションがプリントを置き換えることができます – Uriel

2

あなただけの文字列を印刷するために探している場合は、あなたのような何かをやってオフにはるかに優れている:

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

が、あなたが必要な場合は、実際の関数を解析するには、@Uriel Eliがラムダを使って他の答えで言ったようにすることができます。

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

dictionary["command1"]() 
dictionary["command2"]() 
関連する問題