2016-11-08 2 views
0
import urllib.request as request 

import json 

api = "https://kr.api.pvp.net/championmastery/location/KR/player/38281748/topchampions?api_key=RGAPI-6bdee369-a91d-485a-9280-444de0e37afe" 

api_data = request.urlopen(api).read().decode("utf-8") 

apiload = json.loads(api_data) 

print(apiload) 

Я хочу напечатать свою лигу чемпионов.Как преобразовать словарь в список в словарь в Python 3?

Поэтому я использую https://developer.riotgames.com/api/methods#!/1091/3768 этот API, и

новообращенный объекта Python. но это возвращаемое значение API - это список [ChampionMasteryDTO],

Это означает, что я не могу использовать его в качестве словаря.

apiload содержат [{ "ключ": "значение"}, ... { "ключ": "значение"}]

как я могу сделать apiload как словарь?

ответ

0

apiload переменная печатает два словарей в списке.

Если вы хотите создать новый словарь с помощью apiload вы можете сделать следующее:

#create a new dictionary 
my_dict = {} 
#now iterate through the list 
for item in apiload: 
#now iterate through the dictionaries that are in the list: 
    for key, value in item.items(): 
#assign the key value to the new declared dictionary 
    new_dict[key] = value 

Это создаст новый словарь с следующим выводом:

championId : 91 tokensEarned : 0 championPointsSinceLastLevel : 339079 chestGranted : True lastPlayTime : 1478451844000 playerId : 38281748 championLevel : 7 championPoints : 360679 championPointsUntilNextLevel : 0 championId : 5 tokensEarned : 0 championPointsSinceLastLevel : 129110 chestGranted : True lastPlayTime : 1478454752000 playerId : 38281748 championLevel : 7 championPoints : 150710 championPointsUntilNextLevel : 0 championId : 21 tokensEarned : 0 championPointsSinceLastLevel : 2018 chestGranted : False lastPlayTime : 1476197348000 playerId : 38281748 championLevel : 4 championPoints : 14618 championPointsUntilNextLevel : 6982

Надежда что помогает.

+1

это именно то, что я хотел. Спасибо за ваш ответ. –

0

Что касается структуры вашего ответа, легкий один, если вы просто хотите, чтобы напечатать ваши очки, было бы просто использовать цикл на самом деле:

for el in apiload: 
    print(el["championPoints"]) 

Если ваша проблема напечатать сумму набранных очков используйте collections.Counter:

from collections import Counter 

cnt = Counter() 
for col in apiload: 
    for k in col.keys(): 
     cnt[k] += c.get(k, 0) 

print(cnt['championPoints']) # should print the sum of championPoints 
+0

Я даже не думаю об использовании этого списка. спасибо, что заметили меня. –

Смежные вопросы