Dictionary if-else内为循环查询多个字典

Dictionary if-else内为循环查询多个字典,dictionary,for-loop,conditional,Dictionary,For Loop,Conditional,我对以下代码有问题,因为我正在检查多个字典中的值 当找不到此值时,我将得到多个“未找到”的打印。else语句应检查所有词典,并在检查所有词典(不是每个词典)后打印“未找到” class Catalog: def __init__(self): self.movies_list = [ {'Titulo:': 'The Ring', 'Autor:': 'random_guy', 'Genero:': 'Horror', 'Duracion:':

我对以下代码有问题,因为我正在检查多个字典中的值

当找不到此值时,我将得到多个“未找到”的打印。else语句应检查所有词典,并在检查所有词典(不是每个词典)后打印“未找到”

class Catalog:

    def __init__(self):
        self.movies_list = [
            {'Titulo:': 'The Ring', 'Autor:': 'random_guy', 'Genero:': 'Horror', 'Duracion:': '115 Minutos',
             'Anio:': '2002',
             'Rating:': '7.1/10'},
            {'Titulo:': 'Locos por la progra', 'Autor:': 'other_guy', 'Genero:': 'Comedy', 'Duracion:': '90 Minutos',
             'Anio:': '2000', 'Rating:': '10/10'}]

        #self.user_input
        self.x = 'The Ring'

    def search(self):
        for dict in self.movies_list:
              for i in dict.items():
                    #self.user_input
                     if self.x in i:
                            print(dict['Titulo:'])
                     else:
                            print('not found')
              break

catalog = Catalog()
catalog.search()

创建一个布尔值
found
,如果找到键,则将该值设置为True。在for循环之后,检查变量是否为True。如果它是假的,不要做任何事情,否则,打印找不到

我不确定语法,但应该是这样的:

def search(self):
    boolean found = False
    for dict in self.movies_list:
          for i in dict.items():
                #self.user_input
                 if self.x in i:
                        print(dict['Titulo:'])
                        found = True
    if not found:
         print('not found')

如果要在第一次匹配后中断,可以添加两个中断,其中一个在
found=True
之后,另一个在
outer for循环
之后,如
If-found:break

如果键入匹配的输入,另一个选项是从方法返回。如果未找到任何内容,则在结尾处打印“未找到”

def search(self):
        for dict in self.movies_list:
              for i in dict.items():
                    #self.user_input
                     if self.x in i:
                            print(dict['Titulo:'])
                            return;

        print('not found')   

谢谢,这也澄清了return的用法,并使代码更简洁。如果我没有错,这将返回到上一次迭代。对吗?