我是一个业余爱好者,我试图建立一个相当简单的聊天" python中的程序,用户可以与之进行对话。理想情况下,我认为,该程序将基于以下形式的字典:
dict[(random_output, user_input)] = value
该程序基于这样的想法:当输入匹配先前发生的输入/输出集的一部分时,该值将增加,因此用户过去给出的答案更可能在机器人中重现#39;输出。我曾计划通过获取特定键的最大值(它们本身包括输入和输出列表)来做到这一点,因此当机器人谈得更多时,它将更像是与之交谈的人。
在这样的背景下,问题是基于我弄清楚如何获得特定类型密钥的最大值的麻烦。要清楚,似乎有很多关于返回与整个字典中的最大值相对应的键的指导,例如:
<< Getting key with maximum value in dictionary?>>
<< Print the key of the max value in a dictionary the pythonic way>>
但是,我还没有找到任何讨论如何获得小于整个字典中的键集的特定键集的最大值的内容。所以,换句话说,我想有很多" local"跨越宇宙的最大值"字典,将根据输入量身定制。
我到目前为止的代码如下。我认识到最大问题可能不是我唯一的问题,而且我是一个初学者,所以我可能没有写出最好的代码,但问题的主题似乎是我最大的障碍:
import random
from collections import defaultdict
import operator
pattern = ['hey', 'hello']
groups = defaultdict(int)
n = 1
new_random = random.choice(pattern)
print new_random
n = n + 1
while n > 1:
userInput = raw_input(">>> ")
if userInput == "Stop":
exit()
elif userInput != "Stop":
if (new_random, userInput) in groups:
groups[(new_random, userInput)] += 1
for userInput in groups:
print(max(groups.iteritems(), key=operator.itemgetter(1))[0][1] )
else:
groups[(new_random, userInput)] = 1
pattern.append(userInput)
new_random = random.choice(pattern)
print new_random