Как извлечь вложенный элемент json с помощью python?

{
  "data": {
    "teamStanding": [
      {
        "id": "team_1",
        "score": 103,
        "players": [
          {
            "user": {
              "name": "player_1",
              "id": "player_1"
            },
            "score": 35
             .  .  .

Задача: с помощью python вывести имя ("name") игроков и количество очков ("score") каждого игрока из определённой команды (в данном случае "team_1")
Примерно такой код:
path = 'test.json'

with open(path, 'r') as file:
    read_file = file.read()
data = json.loads(read_file)
for teams in data["data"]:
    for team in teams['teamStanding']:
        for MyTeam in team["id"]:
            if MyTeam["id"] == "team_1":
                print(MyTeam["players"])

Выдаёт ошибку:
TypeError: string indices must be integers, not 'str'

Пожалуйста, помогите решить проблему
  • Вопрос задан
  • 652 просмотра
Решения вопроса 1
Mike_Ro
@Mike_Ro Куратор тега Python
Python, JS, WordPress, SEO, Bots, Adversting
TypeError: string indices must be integers, not 'str'

Не стоит использовать строку как индекс списка.

{
  "data": {
    "teamStanding": [
      {
        "id": "team_1",
        "score": 103,
        "players": [
          {
            "user": {
              "name": "player_1",
              "id": "player_1"
            },
            "score": 35
          },
          {
            "user": {
              "name": "player_2",
              "id": "player_2"
            },
            "score": 30
          }
          // и так далее...
        ]
      },
      // Другие команды...
    ]
  }
}

import json

path = 'test.json'

with open(path, 'r') as file:
    data = json.load(file)

for team in data["data"]["teamStanding"]:
    if team["id"] == "team_1":
        for player in team["players"]:
            print(player["user"]["name"], player["score"])
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы