【问题标题】:Iterating nested Python dictionaries迭代嵌套的 Python 字典
【发布时间】:2014-01-21 06:08:08
【问题描述】:

我正在尝试从嵌套字典(从 json 加载)中收集信息。我正在尝试使用 for 循环来做到这一点。我无法在名为“玩家”的字典中找到字典。 “玩家”包含带有玩家名称和他们的 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": ""
    }
}
}

【问题讨论】:

    标签: python json loops dictionary iteration


    【解决方案1】:
    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 不推荐。
    【解决方案2】:

    外循环中的每个value 本身就是一个字典:

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

    在这里,您首先测试嵌套字典中是否确实存在 players 键,如果存在,则遍历 players 值的所有键和值,再次是字典。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-05
      • 1970-01-01
      • 1970-01-01
      • 2021-11-29
      • 1970-01-01
      • 2017-11-22
      相关资源
      最近更新 更多