2012-11-03 3 views
0

그래서 파이썬에서 사전 객체를 반복 처리하려고하는데, 나는 색인 오류가있는 목록을 얻는다.파이썬에서 배열 객체를 포함하는 사전을 반복하다.

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] 

어떤 생각을 내가 왜 그 오류를 얻고 여기 내 목록의 모습인가?

편집 : 나는 나에 대한 오류를 발생시키지 않습니다 test_list

+0

어떤 사전에 있습니까? 거기에는 각각 a와 b 요소가있는 두 개의 사전이 있습니다. – BrenBarn

+0

두 사전의 a와 b 요소에 액세스하고 싶습니다. – Wiz

답변

1

코드에서 & B의 모든 요소에 액세스하려는. 첫 번째 a와 b 요소를 원한다면, 당신은해야합니다 :

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

없이 말을, 즉 다소 복잡하다. 가지고있는 것은 사전에있는 목록에있는 사전을 사전에있는 목록에있는 것입니다. 왜이 데이터 구조를 사용하고 있습니까? 거의 확실하게 데이터를 표현하는 간단한 방법이 있습니다.

+0

답해 주셔서 감사합니다. 내가 그것을 시도하자. 불행히도, 이것은 제가 제 3 자의 데이터로 얻은 것입니다. 그것은 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

중첩 dicts입니다.

다음 작업을 수행하여 필요한 항목에 액세스 할 수 있습니다.

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

관련 문제