Правильная ссылка на вложенные словари и списки | Python - PullRequest
1 голос
/ 29 апреля 2020

Делая

response=requests.get(url,headers=headers)
    h2h=json.loads(response.text)

, я получаю словарь h2h, который выглядит следующим образом:

{'api': {'fixtures': [{'awayTeam': {'logo': 'https://media.api-sports.io/football/teams/157.png',
                                    'team_id': 157,
                                    'team_name': 'Bayern Munich'},
                       'elapsed': 90,

Я сейчас пытаюсь что-то сделать со всеми приборами определенной команды, например так:

for i in h2h['api']['fixtures']: #for each fixture
        if ['awayTeam']['team_id']==team_id1:
           #do something...

Затем я получаю ошибку:

if ['awayTeam']['team_id']==(team_id1):
TypeError: list indices must be integers or slices, not str

Для ['awayTeam'] [0] я не получаю сообщение об ошибке, что будет означать, что 'awayTeam' - это список.

Почему 'awayTeam' - это список, а не словарь? Разве 'awayTeam' не первый элемент в списке 'fixtures'?

Как правильно ссылаться на 'team_id'?

Спасибо большое!

1 Ответ

1 голос
/ 29 апреля 2020

Вы собираетесь ссылаться на свой словарь и списки неправильно. Чтобы получить идентификатор команды, обратитесь к словарю, как я сделал ниже:

h2 = {'api': {'fixtures': [{'awayTeam': {'logo': 'https://media.api-sports.io/football/teams/157.png','team_id': 157,'team_name': 'Bayern Munich'},'elapsed': 90}]}}

team_id1 = 157 # just to test if condition
for fixture in h2['api']['fixtures']:
    if fixture['awayTeam']['team_id'] == team_id1:
        print (fixture['awayTeam']['team_id'])
        # (do something with fixture['awayTeam']['team_id'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...