如何 select 具有共同值的随机键?
How to select random key with common values?
所以我试图创建一个 AI 只是为了好玩,但我 运行 遇到了问题。目前当你说 Hi
时它会说 Hi
回来。如果你说一些它不知道的东西,比如Hello
,它会要求你定义它,然后将它添加到一个字典变量knowledge
。然后每当你说 Hello
时,它都会将其翻译成 Hi
并会说 Hi
.
但是,我希望它循环遍历您定义为 hi
的内容,并随机说出表示 hi
的内容。因此,如果你告诉它 Hello
、What's Up
和 Greetings
都表示嗨,它会说出其中任何一个,它会 return Hi
。但是一旦它知道 Hi
、Hello
、What's Up
或 Greetings
,我怎么让它说呢? (仅举例)
我试过这个:
def sayHello():
for index, item in enumerate(knowledge):
if knowledge[item] == 'HI':
print(knowledge[index] + "! I'm Orion!")
但是我得到这个错误:
Traceback (most recent call last):
File "python", line 28, in <module>
File "python", line 12, in sayHello
KeyError: 0
你可以这样做:
knowledge = {"hi": ["hi"]}
当您的 AI 得知 new_word
与 "hi"
的含义相同时:
knowledge["hi"].append(new_word)
所以现在,如果你现在向你的 AI 打个招呼(这使用了随机模块):
print(random.choice(knowledge["hi"]))
您首先需要的是只有 hi
的初始字典。然后我们对我们的朋友说些什么。我们检查所有值,如果我们的短语不在那里,我们要求定义该短语。我们使用该定义创建一个新键以及一个默认的空列表。然后我们将该阶段附加到该列表。否则,我们搜索我们的短语所在的值列表,并 select 从该列表中随机选择一个词。
from random import choice
knowledge = {'hi': ['hi']}
while True:
new = input('Say something to HAL: ')
check = list(*knowledge.values())
if new.lower() not in check:
key = input('Define {} for me: '.format(new))
knowledge.setdefault(key.lower(), [])
knowledge[key].append(new.lower())
else:
for k, v in knowledge.items():
if new.lower() in v:
print(choice(v).title())
Say something to HAL: hi
Hi
Say something to HAL: hey
Define hey for me: hi
Say something to HAL: hey
Hey
Say something to HAL: hey
Hi
所以我试图创建一个 AI 只是为了好玩,但我 运行 遇到了问题。目前当你说 Hi
时它会说 Hi
回来。如果你说一些它不知道的东西,比如Hello
,它会要求你定义它,然后将它添加到一个字典变量knowledge
。然后每当你说 Hello
时,它都会将其翻译成 Hi
并会说 Hi
.
但是,我希望它循环遍历您定义为 hi
的内容,并随机说出表示 hi
的内容。因此,如果你告诉它 Hello
、What's Up
和 Greetings
都表示嗨,它会说出其中任何一个,它会 return Hi
。但是一旦它知道 Hi
、Hello
、What's Up
或 Greetings
,我怎么让它说呢? (仅举例)
我试过这个:
def sayHello():
for index, item in enumerate(knowledge):
if knowledge[item] == 'HI':
print(knowledge[index] + "! I'm Orion!")
但是我得到这个错误:
Traceback (most recent call last):
File "python", line 28, in <module>
File "python", line 12, in sayHello
KeyError: 0
你可以这样做:
knowledge = {"hi": ["hi"]}
当您的 AI 得知 new_word
与 "hi"
的含义相同时:
knowledge["hi"].append(new_word)
所以现在,如果你现在向你的 AI 打个招呼(这使用了随机模块):
print(random.choice(knowledge["hi"]))
您首先需要的是只有 hi
的初始字典。然后我们对我们的朋友说些什么。我们检查所有值,如果我们的短语不在那里,我们要求定义该短语。我们使用该定义创建一个新键以及一个默认的空列表。然后我们将该阶段附加到该列表。否则,我们搜索我们的短语所在的值列表,并 select 从该列表中随机选择一个词。
from random import choice
knowledge = {'hi': ['hi']}
while True:
new = input('Say something to HAL: ')
check = list(*knowledge.values())
if new.lower() not in check:
key = input('Define {} for me: '.format(new))
knowledge.setdefault(key.lower(), [])
knowledge[key].append(new.lower())
else:
for k, v in knowledge.items():
if new.lower() in v:
print(choice(v).title())
Say something to HAL: hi Hi Say something to HAL: hey Define hey for me: hi Say something to HAL: hey Hey Say something to HAL: hey Hi