在词典中导航

Navigate in Dictionaries

我无法浏览通过从 here 加载 json 生成的字典。有谁可以帮助我吗。感谢副词。 我试过 tier_d[test - 1] = data[summoners[test - 1]['entries']['leaguePoints']] 但它告诉我 expected integers。我想从中获取 'leaguePoints'。

Summoners_id 是另一个请求提供的 ID,例如它们看起来像“24657246”

url = 'https://{0}.api.pvp.net/api/lol/{0}/v2.5/league/by-summoner/{1},{2},{3},{4},{5},{6},{7},{8},{9},{10}/entry?api_key={11}'.format(region, summoner_id_1, summoner_id_2, summoner_id_3, summoner_id_4, summoner_id_5, summoner_id_6, summoner_id_7, summoner_id_8, summoner_id_9, summoner_id_10, key)
print(url)
response = requests.get(url)
data = json.loads(response.text)
tier = ['Unranked', 'Unranked', 'Unranked', 'Unranked', 'Unranked', 'Unranked', 'Unranked', 'Unranked', 'Unranked', 'Unranked']
tier_d = ['', '', '', '', '', '', '', '', '', '']

done = False
test = 0

rankeds = []

for ids in data:
    rankeds.append(ids)

    print(rankeds)
print(summoners)

while test <= 9:
    test += 1
    if summoners[test - 1] in rankeds:
        tier_d[test - 1] = data[summoners[test - 1]['entries']['leaguePoints']]
        tier[test - 1] = data[summoners[test - 1]][0]['tier']
        print(data[summoners[test - 1]][0]['tier'])

    print(tier)

您有一些 listsdictionaries 相互嵌套。你得仔细过一遍。

data[summoners[test - 1]]的输出是:

[{'entries': [{'division': 'I',
    'isFreshBlood': False,
    'isHotStreak': False,
    'isInactive': False,
    'isVeteran': False,
    'leaguePoints': 0,
    'losses': 14,
    'playerOrTeamId': 'xxyyzz',
    'playerOrTeamName': 'xxyyzz',
    'wins': 8}],
  'name': "Talon's Army",
  'queue': 'xxyyzz',
  'tier': 'BRONZE'},
 {'entries': [{'division': 'V',
    'isFreshBlood': False,
    'isHotStreak': False,
    'isInactive': False,
    'isVeteran': False,
    'leaguePoints': 18,
    'losses': 2,
    'playerOrTeamId': 'xxyyzz',
    'playerOrTeamName': 'xxyyzz',
    'wins': 5}],
  'name': "xxyyzz",
  'queue': 'xxyyzz',
  'tier': 'SILVER'}]

所以这应该给你 leaguePoints 值:

tier_d[test - 1] = data[summoners[test - 1]][0]['entries'][0]['leaguePoints']
tier_d[test - 1] = data[summoners[test - 1]][1]['entries'][0]['leaguePoints']

取决于列表中的第一个或第二个条目。