2016-12-29 13 views
1

Ich habe eine json, die wie folgt aussieht:Python Looping durch verschachtelte Arrays

[ 
    { 
     "status":"passed", 
     "elements":[{"name":"foo"},{"name":"bar"}] 
    }, 
    { 
     "status":"failed", 
     "elements":[{"name":"foo1"},{"name":"bar1"}] 
    } 
] 

Ich versuche, durch die Array-Elemente iterieren:

for a in json['elements']: 
    print a['name'] 

ich diesen Fehler:

TypeError: list indices must be integers, not str

Mein Python ist wirklich schlecht. Danke

+0

'json ['elements']' gibt Ihnen eine Liste mit zwei Elementen: '{" name ":" foo1 "} und {" name ":" bar1 "}', also müssen Sie mit einer Ganzzahl indizieren , keine Schnur. – FlipTack

Antwort

0

Mit Ihrem Code versuchen Sie, den Wert des Schlüssels 'elements' aus dem Wörterbuch json zu erhalten. Aber json ist kein Diktat, sondern eine Reihe von Diktaten. So was sollte man stattdessen tun ist:

for dic_x in json: 
    for dic_y in dic_x['elements']: 
     print dic_y['name'] 
2

Try this:

for a in json: 
    for b in a['elements']: 
     print b['name'] 
+0

BTW, Ihre Datenstruktur ist kein JSON, sondern ein Array von JSONs. –

0

Sie müssen Schleife durch Ihre list und dann mit Ihren Daten wie gehen Sie, was Sie tun mit dicts wie in diesem Beispiel:

my_json = [ 
    { 
     "status":"passed", 
     "elements":[{"name":"foo"},{"name":"bar"}] 
    }, 
    { 
     "status":"failed", 
     "elements":[{"name":"foo1"},{"name":"bar1"}] 
    } 
] 

for element in my_json: 
    for v in element["elements"]: 
     print(v["name"]) 

Ausgang:

foo 
bar 
foo1 
bar1