2017-03-11 10 views
0

複数の辞書で値をチェックしているので、次のコードに問題があります。else forループ内で複数の辞書を参照している場合

この値が見つからない場合は、「見つからない」という複数のプリントが表示されています。 elseステートメントはすべての辞書をチェックし、それぞれの辞書ではないすべての辞書をチェックした後に 'not found'を出力する必要があります。

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

答えて

0

もう1つのオプションは、キー入力が一致した場合にメソッドから戻ることです。何も見つからない場合は、最後に「見つからない」と印刷してください。

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

ありがとうございました。これもまたリターンの使用法を明確にし、コードをきれいにします。私が間違っていないなら、これは以前の反復に戻ります。あれは正しいですか? – hyl3rid

0

キーが値Trueを作成すると、ブール値foundを作成します。 forループの後で、変数がTrueかどうかをチェックします。 falseの場合は何もしないでください。それ以外の場合はprint not foundとなります。

は、私は、構文のかわからないが、このようなものでなければなりません:あなたが最初の試合後にブレークしたい場合は、found = True、後2回の休憩、それらのいずれかを追加することができます

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

他の1つはouter for loopの後にあるif found: break

関連する問題