Python доступ к элементам в словаре внутри словаря
Я получаю ответ от сервера ОМОНа:
def main():
api = RiotAPI('dec34559a91-ad8b-4fd2-b49a-bae3b4524522b8a')
summoner_name = str(input("Please enter the summoner ID\n"))
if summoner_name == "":
summoner_name = "zLKida"
r = api.get_summoner_by_name(summoner_name)
print(r)
который печатает что-то вроде этого:
{'zlkidda': {'profileIconId': 539, 'id': 27003987, 'summonerLevel': 30, 'name': 'zLKidda', 'revisionDate': 1444958792000}}
Я понятия не имею, как я могу получить доступ к данным внутри словаря. Обратите внимание, что он возвращается как dict, а не как строка или что-то еще.
Я пытался:
print(r['zlkidda'].['profileIconId'])
1 ответ
Решение
Удалить точку:
print(r['zlkidda']['profileIconId'])
или для вашего кода специально, повторное использование summoner_name
переменная:
print(r[summoner_name]['profileIconId'])
Вы используете подписки здесь; [...]
выбирает один элемент из контейнера.
.
нотация, с другой стороны, используется для ссылки на атрибуты, используйте это для таких вещей, как dict
методы:
print(list(r['zlkidda'].keys()))