2016-07-05 39 views
3

Ich habe eine einfache Bedingung, wo ich überprüfen muss, ob ein Diktatwert sagen [Complted] in einem bestimmten Schlüssel enthält.Wie überprüft man, ob ein Diktatwert ein Wort/eine Zeichenfolge enthält?

Beispiel:

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

ich überprüfen müssen, ob die Description Schlüssel [Complted] darin enthalten beim Start. d.h

'Descripton': '[fertiggestellt] Die Instanz läuft auf degradierten Hardware'

Wie kann ich dies tun? Ich bin auf der Suche nach etwas wie

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

Was ist diese Linie tun soll? ''Code': 'Instanz-Neustart' | 'System-Neustart' | 'System-Wartung' | 'Instanz-Ruhestand' | 'Instanz-Stop'' – sidney

+1

Warum für ein potenzielles Duplikat ablehnen? Er war vorsichtig genug, um eine Frage mit genügend Details zu stellen. –

+0

@HarshTrivedi Vielleicht weil * "Diese Frage zeigt keinerlei Forschungsaufwand ..." *? – SiHa

Antwort

1

Dies sollte funktionieren. Sie sollten in anstelle von consists verwenden. In Python gibt es nichts consists genannt.

"ab" in "abc" 
#=> True 

"abxyz" in "abcdf" 
#=> False 

So in Ihrem Code:

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

Hoffe, es hilft:)

+0

'in' ist ein Schlüsselwort, keine Methode. – sidney

+1

Es ist nicht notwendig, nach '! = None' zu ​​suchen, und das ist nicht der richtige Weg, um danach zu suchen. Es sollte "ist nicht keiner" sein. – 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

Ich fand auch diese

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

Sehen funktioniert, dass die 'Events' Taste a hat Liste der Wörterbücher als Wert, können Sie alle durchlaufen, anstatt den Index fest zu codieren.

Auch inst ['Events'][0]['Code'] == "instance-stop": wird in dem von Ihnen bereitgestellten Beispiel nicht zutreffen.

Versuchen Sie es auf diese Weise zu tun:

for key in inst['Events']: 
    if 'instance-stop' in key['Code'] and '[Completed]' in key['Description']: 
     # do something here 
Verwandte Themen