在列表中查找一个值,如果有多个值则打印所有值,否则从另一个列表中打印相应的值

Find A value in list , if there are multiple value print all the values else print the corresponding values from another list

我有两个列表:

Keyword = ['Dog', 'Cat', 'White Cat', 'Lion', 'Black Cat']
Definition = ['Mans Best Friend', 'The cat is a domestic species of a small carnivorous mammal', 'White  cats are cute', 'Lions are Carnivores Wild Animal', 'Black Cats are Black in color']

我通过以下命令在 'query' 中获得语音输入:

import speech_recognition as sr

def takeCommand():
     
    r = sr.Recognizer()
     
    with sr.Microphone() as source:
         
        print("Listening...")
        r.pause_threshold = 1
        audio = r.listen(source)
  
    try:
        print("Recognizing...")   
        query = r.recognize_google(audio, language ='en-in')
        print(f"User said: {query}\n")
  
    except Exception as e:
        print(e)   
        print("Unable to Recognize your voice.") 
        return "None"
     
    return query

query = takeCommand().Capitalize()

现在,如果查询中包含 Dog 我想从列表中打印相应的定义,即“Man's Best Friend”,如果查询包含 Cat ,我想向用户显示有多个关键字具有 'Cat' 在其中,即 'Cat'、'White Cat'、'Black Cat',如果查询中的单词不在列表中,我想打印“未找到关键字,请检查您的关键字”

有没有人知道如何解决这个问题?

不同情况的输入输出:

输入:查询中有 'Dog'。该程序应检查是否有超过 1 个包含 Dog 的单词。如果是,它应该打印所有包含 Dog 的关键字,如果不是,那么它应该打印相应的定义。在这种情况下,关键字 Dog 的输出应该是相应的定义,即 'Mans Best Friend'.

输入:查询中有 'Cat'。在这种情况下,关键字有 3 个关键字,其中有 cat,即 'Cat' 、 'Black Cat'、'White Cat' 所以这里的代码应该打印这些关键字而不是它们的定义。所以这种情况的输出:我们找到了多个关键字:'Cat'、'Black Cat'、'White Cat'

输入:查询中有 'Panther'。关键字中没有 Panther 所以它应该打印“没有匹配的关键字”。

Keyword = ['Dog', 'Cat', 'White Cat', 'Lion', 'Black Cat']
Definition = ['Mans Best Friend', 'The cat is a domestic species of a small carnivorous mammal', 'White  cats are cute', 'Lions are Carnivores Wild Animal', 'Black Cats are Black in color']

def take_cmd(cmd):
    multiple_val=[]
    if cmd in Keyword:
        for i,j in enumerate(Keyword):
            if cmd in j:
                multiple_val.append((i,j))
        if len(multiple_val)>1:
            i_removed=[j for i in multiple_val for j in i if type(j)!=int]
            print(f"We have found multiple keywords : {i_removed}")
        else:
            print(Definition[Keyword.index(cmd)])
    else:
        print("There are no Matching Keywords")

这段代码的作用是:

  1. 检查输入的值是否存在于Keyword中,如果不存在则return“没有匹配的关键字”。
  2. 如果该值存在,则将检查是否有多个实例或该值是否在多个索引中可用。
  3. 如果 return 也为真,则将其附加到 multiple_vals。如果 multiple_val 的长度大于 1 那么它只会显示 f"We have found multiple keywords : {i_removed}".
  4. 否则显示Definition中对应的索引。