2016-07-05 17 views
3

私は、dict値に特定のキーに[Complted]と言っているかどうかを調べる必要があるという単純な条件があります。dict値に単語/文字列が含まれているかどうかを確認する方法は?

'Events': [ 
       { 
        'Code': 'instance-reboot'|'system-reboot'|'system-maintenance'|'instance-retirement'|'instance-stop', 
        'Description': 'string', 
        'NotBefore': datetime(2015, 1, 1), 
        'NotAfter': datetime(2015, 1, 1) 
       }, 
      ], 

私はDescriptionキーは、開始時に、それに[Complted]が含まれているかどうかを確認する必要があります。すなわち

'Descripton': '[完了]インスタンスが劣化し ハードウェア上で実行されている' 私がそうすることができますどのように

?私は何かを探しています

if inst ['Events'][0]['Code'] == "instance-stop": 
     if inst ['Events'][0]['Description'] consists '[Completed]": 
       print "Nothing to do here" 
+1

この行が行うことになっているもの:

は、このようにそれを行うようにしてください? ''コード ':'インスタンスリブート '|'システムリブート '|'システムメンテナンス '|'インスタンス退職 '|'インスタンス停止 ' – sidney

+1

潜在的な重複はなぜdownvote?彼は充分な詳細で質問をするのに十分注意しています。 –

+0

@HarshTrivedi多分、「この質問は研究努力を示していません...」? – SiHa

答えて

1

これは動作するはずです。 consistsの代わりにinを使用する必要があります。 Pythonにはconsistsというものは何もありません。

if inst['Events'][0]['Code'] == "instance-stop": 
     if '[Completed]' in inst['Events'][0]['Description'] 
      # the string [Completed] is present 
      print "Nothing to do here" 

はそれが役に立てば幸い:あなたのコード内ので

"ab" in "abc" 
#=> True 

"abxyz" in "abcdf" 
#=> False 

+0

'in'はキーワードであり、メソッドではありません。 – sidney

+1

'!= None'をチェックする必要はありません。それは正しいかどうかを確認する方法ではありません。それは 'ではない'でなければなりません。 – RedX

0
for row in inst['Events']: 
    if ("instance-stop" in row['Code'].split('|')) and ((row['Descripton'].split(' '))[0] == '[Completed]'): 
     print "dO what you want !" 
1

は、私はまた、これは'Events'キーを持っていることを見て

elif inst ['Events'][0]['Code'] == "instance-stop": 
         if "[Completed]" in inst['Events'][0]['Description']: 
          print "Nothing to do here" 
1

作品見つけ辞書のリストインデックスをハードコーディングする代わりに、すべてを反復処理することができます。

また、inst ['Events'][0]['Code'] == "instance-stop":は、入力した例では該当しません。

for key in inst['Events']: 
    if 'instance-stop' in key['Code'] and '[Completed]' in key['Description']: 
     # do something here 
関連する問題