簡體   English   中英

Python - 字典嵌套在字典中嵌套的列表中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM