2016-07-09 8 views
-1

私は、次のように、1つの辞書を持っている:私はキーでリストを除くadict内のすべてのリスト のために、いくつかのことを実行したいifテストに合格する方法はありますか?

adict = {'1': alist, '0': blist, '2': clist} 

「0」。

は、だから私は試してみました:

for key in adict: 
    if key is not '0': 
     do something 

が、テストは仕事をdoesnot、 何かが一つのキー== '0' を含め 、すべての場合に行われます。

私は何が間違っているのか理解できません。

+2

このコードは私のためにうまく実行され、 'alist'と' clist'のためだけに "何か"に入ります。あなたは翻訳の中の何かを私たちのための簡単な例に失っていないと確信していますか? – Jeff

+0

変更されたコード(実際には何かを印刷物とダミーリストとして扱う)が機能する。いずれにしても、 '!='または '=='を介して継続条件と対になって値条件をチェックしたいと思うでしょう。 @JeffLとして。あなたのシステムでもエラーが発生する、あまり「編集された」コードで質問を更新してください。ありがとう。 – Dilettant

答えて

6

is値の等しいではなくオブジェクトの等価性のテスト。したがって、keyが、文字列が同じ値を持つかどうかではなく、次に入力する文字列'0'とまったく同じ文字列オブジェクトであれば、ここを見ています。おそらく、等しくない値をテストするべきです。

if key != '0': 
    <do something> 
+0

これは正解です。人々は 'is'と' == 'に注意しなければなりませんが、Python 2.7では彼のやり方が彼の予想通りに評価されるべきです。つまり、「0」==「0」と「0」は「0」です。私は彼がおそらくdtypesを混ぜているのだろうかと思っています。 – Jeff

+0

@JeffL。ええ、私はOPが "0"のためにうまくいかないと報告していて驚いていたので、おそらくもっと深いことが起こっているかもしれません –

関連する問題