当我做request.get时,我得到了一个看起来像这样的响应,数据来自LoL API:
{
"champions": [
{
"id": 111,
"stats": {
"maxChampionsKilled": 2,
"maxNumDeaths": 5,
"mostChampionKillsPerSession": 2,
"mostSpellsCast": 0,
"totalAssists": 25,
"totalChampionKills": 2,
"totalDamageDealt": 40838,
"totalDamageTaken": 27900,
"totalDeathsPerSession": 5,
"totalDoubleKills": 0,
"totalFirstBlood": 0,
"totalGoldEarned": 11070,
"totalMagicDamageDealt": 21083,
"totalMinionKills": 56,
"totalPentaKills": 0,
"totalPhysicalDamageDealt": 12876,
"totalQuadraKills": 0,
"totalSessionsLost": 1,
"totalSessionsPlayed": 1,
"totalSessionsWon": 0,
"totalTripleKills": 0,
"totalTurretsKilled": 1,
"totalUnrealKills": 0
}
},
我正在努力获取“统计数据”中的数据。我真正想做的是类似于以下内容:
champ_data = received['champions']['stats']['totalSessionsPlayed']
print(champ_data)
然而它不起作用,因为在“冠军”之后有一个'['而且我得到了错误:
TypeError: list indices must be integers, not str
答案 0 :(得分:1)
你想要这个
received['champions'][0]['stats']
获得第一个冠军的统计数据。或者,这个
received['champions'][n]['stats']
获取 nth 冠军的统计数据。或者,这个
[champion['stats'] for champion in received['champions']]
列出每位冠军的统计数据。
答案 1 :(得分:0)
received['champions']
是一个列表。要处理所有条目(如果你想做什么),你必须迭代它:
for champion in received['champions']:
print(champion['stats']['totalSessionsPlayed'])
答案 2 :(得分:0)
另外,如果属性champions
为空,请检查您收到的数据对象。
答案 3 :(得分:0)
在你的例子中,'champion'是一个包含一个元素的列表。 该列表元素可以由冠军[0]访问。 此列表的元素是一个包含2个键:值对的字典。 'stats'是第二对的关键,可以通过冠军[0] ['stats']访问。 同样,'stats'键的值是一个字典,其任何键的值,例如'totalSessionsPlayed'的值都可以通过 冠军[0] [ '统计'] [ 'totalSessionsPlayed']