2016-12-29 153 views
1

我有一个JSON看起来像这样:Python的循环通过嵌套阵列

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

我试图通过元素数组迭代:

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

我得到这个错误:

TypeError: list indices must be integers, not str

我的蟒蛇真的很糟糕。谢谢

+0

'json ['elements']'给出了两个条目:'{“name”:“foo1”}和{“name”:“bar1”}',因此您需要使用整数,而不是一个字符串。 – FlipTack

回答

0

使用您的代码,您试图从字典json中获取密钥'elements'的值。但json不是字典,而是一系列的字迹。因此,你应该做的却是:通过您的list

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

试试这个

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"]) 

输出:

foo 
bar 
foo1 
bar1 
+0

顺便说一下,你的数据结构不是JSON,它是一个JSON数组。 –

0

您需要循环,然后用你的数据继续像你dicts做这样的例子:

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