如何从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")
''

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章