如何从python中的json获取输入的随机回复
我有一个包含一些规则的 json 文件。这是一个例子:
[
{
"triggers": ["hello", "hey", "hi"],
"replies": [
{
"reply": "Hey there"
},
{
"reply": "Hola"
},
{
"reply": "Hello World"
}
]
},
{
"triggers": ["who are you", "your name"],
"replies": [
{
"reply": "some name"
},
{
"reply": "lorem ipsum"
}
]
}
]
我想要实现的是,如果用户查询文本,让我们说“你好”,我希望脚本搜索 json 文件并查看查询是否存在于任何trigger数组中。如果它存在,那么我希望脚本从数组中随机 选择一个。replyreplies
我可以:
- 根据需要更改json文件,只要有触发器列表和每个触发器的回复列表即可。
- 使用循环。但请记住,我的 json 文件比上面的文件大,因此它们不应该减慢我的整个脚本的速度。
我不能:
- 使用 while 循环或无限循环。我必须同时处理其他数据。
我什么都试过了。如果可以,请帮助我。感谢您的帮助。
回答
我们可以使用random.choice(...)从序列中选择一个随机元素。请注意,如果序列为空,它将引发错误。假设s是您的字典列表:
import random
def reply(greet):
for e in s:
if greet in e["triggers"]:
return random.choice(e["replies"])["reply"]
return ""
>>> reply("hey")
'Hey there'
>>> reply("hey")
'Hey there'
>>> reply("hey")
'Hello World'
>>> reply("hey")
'Hello World'
>>> reply("hey")
'Hola'
>>> reply("who are you")
'lorem ipsum'
>>> reply("who are you")
'some name'
>>> reply("not exist")
''