2017-02-22 7 views
0

に存在するかどうかをチェックするためにどのように私はそうのようなループが含まれている機能があります。key_diffとvalue_diffが定義されている場合(つまり、2つの辞書に差がある)変数はprint文

for k,v in dict1.items(): 
    try: 
     if dict1[k] != dict2[k]: 
      key_diff = k 
      value_diff = dict1 [k] 
    except: 
     pass 

をその後、私はこれらの変数のそれぞれを別の場所に表示したいと思います。しかし、問題は何も辞書がないので辞書は、同一である場合、コードは動作しません

print("File extension count:", 
    len(ext1_lst), '.ext1 files', 
    len(ext2_lst), '.ext2 files', 
    'Missing File Types:', '\n', 
    'Missing ext1 files =', ','.join(set(ext1_names).difference(ext1_lst)), 
    'Missing ext2 files =', 'there is/are', value_diff, 'missing', key_diff, 'files', '\n\n\n', 

...私は(最後の行に注意してください)のようなマルチラインのprint文でそれを印刷したいです作成されました - 私は "割り当て前に参照されているunboundlocalerror"を取得します。私の質問は、printステートメント内のtry/exceptステートメントに結果があったかどうかを確認する方法です。

+0

一般に、変数が定義されているかどうかについて不確実性がある場合は、何か間違ったことをしています。ループの前にそれらを初期化する: '' 0''と '' "" ''それ以上の変更なしで妥当な出力を生成するか、変数の1つを初期値としてチェックし、場合。 – jasonharper

答えて

0

forループの中にtry/catchがある理由はわかりません。例外が発生する条件はありません。

単純な解決方法は、ループに入る前に初期値で変数を初期化することです。その後、値が変更されたかどうかを比較することができます。