2012-11-03 66 views
0

所以我想遍历python中的字典对象,并且我得到的所有内容都是列出索引错误。这里是我的名单看起来像 -迭代包含python中的数组对象的字典

test_list = {"1":[{"1":[{"a":"100","b":"200"}],"2":[{"a":"300","b":"400"}]}]} 

这里是代码 -

for counter in range(len(test_list)): 
      print test_list['1'][counter] 

任何想法,为什么我会收到这个错误?

编辑:我想访问全部& b元素的test_list

+0

哪个字典?你有两本字典,每本都有一个a和b元素。 – BrenBarn

+0

我想访问这两个字典中的a和b元素 – Wiz

回答

1

您的代码不会引发错误我。如果你想要第一个a和b元素,你需要:

for key, val in test_list['1'][0]['1'][0].items(): 
    print key, val 

不用说,这是相当复杂的。你有什么是字典列表中字典列表中的字典。你为什么使用这个数据结构?几乎肯定有一种更简单的方式来表示数据。

+0

感谢您的回答。让我试试看。不幸的是,这是我从第三方获得的数据。它是json响应的大字典,所以我必须处理它的复杂结构 – Wiz

+0

是的,它工作。如果我想访问其他项目,那么我必须稍微修改此块。我已经添加了答案 – Wiz

1
for k,v in test_list.items(): 
    print v[0]['1'] 

好吧,也许这帮助:

for c in test_list: 
    for v in test_list[c]: 
      print v['1'] 
      print v['2'] 
+0

如果我输入print v [0] ['2'],那么它会再次抛出一个错误。如果我有v [0] ['1'],它只会给我第一个字典(在字典test_list内) – Wiz

+0

Nopes,没有工作。不过,我还是增加了答案 – Wiz

0

因此,这里的答案列表中的

for key, val in test_list['1'][0].items(): 
    print key, val[0]['a'] 
    print key, val[0]['b'] 
1
python 3.2 

    t = {"1":[{"1":[{"a":"100","b":"200"}],"2":[{"a":"300","b":"400"}]}]} 
    res=[v["a"] for x in t.values() for p in x for y in p.values() for v in y] # values for a 
1

嵌套类型的字典,真棒。

我做了以下操作,可以修改它以访问所需的项目。

In [21]: inside_dict = test_list['1'][0] 

In [22]: for key,val in inside_dict.items(): 
    print '{} contains'.format(key) 
    for key2, val2 in val[0].items(): 
     print '\t{}: {}'.format(key2, val2) 
Out[22]: 
1 contains 
     a: 100 
     b: 200 
2 contains 
     a: 300 
     b: 400 
+0

酷。感谢您的回答。是的,数据结构有点复杂。 – Wiz