2015-12-21 3 views
-4
requestArr= { 
    'test1': { 
     "id_comments": "ABC", 
     "id_testname": "abc", 
    }, 
    'test2' : { 
     "id_comments": "DEF", 
     "id_testname": "def", 
    }, 
    'test3' : { 
     "id_comments": "GHI", 
     "id_testname": "ghi", 
    } 
} 

Как добавить это в python «За цикл» один за другим со значениями, например.как итераторский словарь для цикла в питоне?

test1{id_comments & id_testname} 
# and so on 

e.g.-

for i in requestArr: 
    for j in requestArr[i]: 
     for k in requestArr[i][j]: 
      print k['id_comments'] 
      print k['id_testname'] 
      # query to database 

получаю ошибку

индексы должны быть целыми, не ул

Как я этого добиться?

+0

Не могли бы вы еще раз объяснить, что хотите? Я не понимаю. Вы хотите определить значения или прочитать их? – tglaria

+0

'for elem in requestArr.values ​​(): print elem' – Ingaz

+1

Благодаря CoryKramer для редактирования с правильными шрифтами. tglaria любезно увидеть вопрос сейчас. –

ответ

1

Вы можете перебирать словарей items

for key, value in requestArr.items(): 
    print(key, value) 

Выходной

test2 {'id_comments': 'DEF', 'id_testname': 'def'} 
test1 {'id_comments': 'ABC', 'id_testname': 'abc'} 
test3 {'id_comments': 'GHI', 'id_testname': 'ghi'} 
+0

Будет работать, но это python3. Также следует использовать 'viewitems()' –

+1

@ cricket_007 Это будет работать как в Python 3.x, так и в Python 2.7. И в этом случае не важно, используют ли они 'items' или' viewitems' – CoryKramer

+0

Привет @Corykramer, я хочу достичь этого - для i в requestArr: для j в requestArr [i]: для k в запросеArr [i ] [j]: print k ['id_comments'] print k ['id_testname'] # запрос к базе данных –

1

Python 2.7

items() будет возвращать список кортежей.

>>> requestArr.items() 
[('test1', {'id_comments': 'ABC', 'id_testname': 'abc'}), ('test3', {'id_comments': 'GHI', 'id_testname': 'ghi'}), ('test2', {'id_comments': 'DEF', 'id_testname': 'def'})] 

iteritems() будет возвращен объектiteriterator.

>>> requestArr.iteritems() 
<dictionary-itemiterator object at 0xb6d3b734> 
>>> for k, v in requestArr.iteritems(): 
... print k, v 
... 
test1 {'id_comments': 'ABC', 'id_testname': 'abc'} 
test3 {'id_comments': 'GHI', 'id_testname': 'ghi'} 
test2 {'id_comments': 'DEF', 'id_testname': 'def'} 
>>> 

Python 3.x

Одним из изменений Python 3 является то, что элементы() теперь возвращают итераторы, и список никогда полностью построен. Метод iteritems() также исчез, так как items() теперь работает как iteritems() в Python 2.

Смежные вопросы