[英]Python - Dict nest in List nested in Dict
當我執行 requests.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
你要這個
received['champions'][0]['stats']
對於第一個冠軍的統計數據。 或這個
received['champions'][n]['stats']
第n個冠軍的數據。 或這個
[champion['stats'] for champion in received['champions']]
獲取每個冠軍的統計數據列表。
received['champions']
是一個列表。 要處理所有條目(如果這是您想要做的),您必須對其進行迭代:
for champion in received['champions']:
print(champion['stats']['totalSessionsPlayed'])
此外,如果屬性champions
為空,請對您收到的數據對象進行一些檢查。
在您的示例中,“冠軍”是一個包含一個元素的列表。 這個列表元素可以被冠軍[0]訪問。 這個列表的元素是一個有 2 個鍵值對的字典。 'stats' 是第二對的鍵,可以通過 Champion[0]['stats'] 訪問。 同樣,'stats' 鍵的值是一個字典,其任何鍵的值,例如 'totalSessionsPlayed' 的值都可以被冠軍 [0]['stats']['totalSessionsPlayed'] 訪問
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.