2014-01-03 3 views
7

Я пытаюсь собрать информацию из вложенных словарей (загруженных из json). Я пытаюсь сделать это с помощью цикла. Мне не удалось получить словарь в словаре, который называется «игроки». «игроки» содержат словарь с именами игроков и их идентификаторами. Я хотел бы извлечь этот словарь. Вы можете найти мой код и образец данных ниже.Итерация вложенных словарей Python

Мне удалось перебрать первый уровень в словарь, но я не могу отфильтровывать более глубокие уровни.

Я просматривал другие подобные вопросы, но они решали различные проблемы итерации словаря. Я не мог использовать их для своих целей. Я думал об извлечении информации, которая мне нужна, используя data.keys() ["players"], но я не могу справиться с этим в данный момент.

for key, value in dct.iteritems(): 
    if value == "players": 
     for key, value in dct.iteritems(): 
      print key, value 

Образец моих данных:

{ 
"[CA1]": { 
    "team_tag": "[CA1]", 
    "team_name": "CzechAir", 
    "team_captain": "MatejCzE", 
    "players": { 
     "PeatCZ": "", 
     "MartyJameson": "", 
     "MidnightMaximus": "", 
     "vlak_in": "", 
     "DareD3v1l": "", 
     "Hugozhor78": "" 
    } 
}, 
"[GWDYC]": { 
    "team_tag": "[GWDYC]", 
    "team_name": "Guys Who Dated Your Cousin", 
    "team_captain": "Teky1792", 
    "players": { 
     "wondy22": "", 
     "dzavo1221": "", 
     "Oremuss": "", 
     "Straker741": "", 
     "Vasek9266": "" 
    } 
} 
} 

ответ

10

Каждый value во внешнем контуре сам по словарю:

for key, value in dct.iteritems(): 
    if 'players' in value: 
     for name, player in value['players'].iteritems(): 
      print name, player 

Здесь вы проверяете первым, если ключ players действительно присутствует во вложенном словаре, тогда, если это так, повторите все ключи и значения значения players, снова словарь.

0
for team in myData: 
    for player,id in myData[team]['players'].iteritems(): 
     print "player %s has ID '%s'" %(player, id) 
+0

Я нахожу этот ответ, потому что: 1) Он не использует код, который присутствовал в этом вопросе: («MyData») вместо («ДКП») 2) Он предлагает использовать «% S «форматирование, которое не рекомендуется использовать python. – Aidis

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