You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python字典中实现多关键词匹配的响应生成?

如何在Python字典中同时匹配多个关键词触发响应

需求是:当用户输入同时包含“generate”和“name”两个关键词时,触发对应的响应生成。你提供的原有代码将两个关键词拼接成了连续字符串"generatename",只能匹配输入中出现该连续字符串的情况,无法处理两个关键词分开出现的场景(比如“can you generate a name”)。

下面是修改后的实现方案,支持同时匹配多个关键词:

import random
import datetime

# 键为需要同时匹配的关键词元组,值为对应响应列表
keywords = {
    ("generate", "name"): ["Joe", "Bob", "Tim"],
}

def generate_response(user_input):
    input_lower = user_input.lower()
    for keyword_group, responses in keywords.items():
        # 检查当前组内所有关键词是否都存在于输入中
        if all(keyword in input_lower for keyword in keyword_group):
            return random.choice(responses)
    return "I'm sorry, I didn't understand what you said."

def main():
    print("Chatbot: Hi, I'm a Chatbot. How can I help you today?")
    while True:
        user_input = input("You: ")
        if user_input.lower() == "quit":
            break
        response = generate_response(user_input)
        print("Chatbot:", response)

if __name__ == "__main__":
    main()

关键改动说明

  • 调整字典结构:将字典的键从拼接字符串改为关键词元组,这样可以清晰定义需要同时匹配的多组关键词,后续扩展其他组合(比如同时匹配“tell”和“joke”)只需添加新的键值对即可。
  • 修改匹配逻辑:使用all()函数判断当前关键词组内的所有关键词是否都存在于用户输入中,确保只有当所有关键词都满足时才触发对应响应。
  • 修复代码问题:补上了原代码中缺失的datetime模块导入(原代码中声明了now变量但未使用,也可以直接删除该变量声明)。

如果需要支持更多关键词组合,只需扩展keywords字典:

keywords = {
    ("generate", "name"): ["Joe", "Bob", "Tim"],
    ("tell", "joke"): ["Why did the scarecrow win an award? Because he was outstanding in his field!", "What do you call fake spaghetti? An impasta!"]
}

内容的提问来源于stack exchange,提问作者Ryan Cheung

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 13:35:01