迭代嵌套的Python字典

7

我正在尝试从嵌套字典(从json加载)中收集信息。我正在尝试使用for循环来完成此操作。我无法获得名为“players”的字典内部的字典。“players”包含玩家名称及其ID的字典。我想提取那个字典。您可以在下面找到我的代码和数据样本。

我能够遍历第一层的字典,但是我无法过滤更深层次的字典。

我一直在查看其他类似的问题,但它们处理的是字典迭代的不同问题。我不能将它们用于我的目的。我正在考虑通过使用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": ""
    }
}
}
2个回答

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)

我之所以选择此答案,是因为: 1)它没有使用问题中提供的代码(“myData”而不是“dct”) 2)它建议使用“%s”格式化,这在Python中并不被推荐。 - Aidis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接