if if inside for循环咨询多个词典

时间:2017-03-11 20:40:01

标签: dictionary for-loop conditional

我遇到以下代码的问题,因为我正在检查多个字典的值。

如果找不到此值,我将收到多次“未找到”的打印件。 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()

2 个答案:

答案 0 :(得分:0)

如果您发现键值为True,则创建一个布尔值found。在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 loop之后if found: break

答案 1 :(得分:0)

另一种选择是,如果您键入匹配的输入,则从方法返回。如果找不到任何内容,则打印“未找到”'最后

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')