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()))
Другие вопросы по тегам