Найти элемент в списке словарей - PullRequest
0 голосов
/ 03 апреля 2020

В следующей структуре данных:

[
  {
    "id": 28,
    "country": "Brazil",
    "country_code": "BR",
    "country_population": 201103330,
    "province": "",
    "last_updated": "2020-04-03T01:40:00.724616Z",
    "coordinates": {
      "latitude": "-14.235",
      "longitude": "-51.9253"
    },
    "latest": {
      "confirmed": 8044,
      "deaths": 324,
      "recovered": 0
    },
    "timelines": {
      "confirmed": {
        "latest": 8044,
        "timeline": {
          "2020-01-22T00:00:00Z": 0,
          "2020-01-23T00:00:00Z": 0,
          "2020-01-24T00:00:00Z": 0,
        }
      },
      "deaths": {
        "latest": 324,
        "timeline": {
          "2020-01-22T00:00:00Z": 0,
          "2020-01-23T00:00:00Z": 0,
          "2020-01-24T00:00:00Z": 0,
        }
      },
      "recovered": {
        "latest": 0,
        "timeline": {}
      }
    }
  }
]

Как получить "timeline" предметов, из ключа "timelines"?

Ответы [ 3 ]

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

Вы должны предоставить хотя бы часть кода из того, что вы пытались сейчас ..

d = [
  {
    "id": 28,
    "country": "Brazil",
    "country_code": "BR",
    "country_population": 201103330,
    "province": "",
    "last_updated": "2020-04-03T01:40:00.724616Z",
    "coordinates": {
      "latitude": "-14.235",
      "longitude": "-51.9253"
    },
    "latest": {
      "confirmed": 8044,
      "deaths": 324,
      "recovered": 0
    },
    "timelines": {
      "confirmed": {
        "latest": 8044,
        "timeline": {
          "2020-01-22T00:00:00Z": 0,
          "2020-01-23T00:00:00Z": 0,
          "2020-01-24T00:00:00Z": 0,
        }
      },
      "deaths": {
        "latest": 324,
        "timeline": {
          "2020-01-22T00:00:00Z": 0,
          "2020-01-23T00:00:00Z": 0,
          "2020-01-24T00:00:00Z": 0,
        }
      },
      "recovered": {
        "latest": 0,
        "timeline": {}
      }
    }
  }
]
print(d[0]["timelines"]["confirmed"]["timeline"])

Кстати:

"timeline": {
  "2020-01-22T00:00:00Z": 0,
  "2020-01-23T00:00:00Z": 0,
  "2020-01-24T00:00:00Z": 0,
}

Выглядит странно для меня, делает timeline должно быть array вместо object?

0 голосов
/ 03 апреля 2020

У вашего JSON действительно есть проблема

"JSONDecodeError: Ожидаемое имя свойства заключено в двойные кавычки: строка 24 столбца 9 (символ 558)"

Который, в свою очередь, является вашей временной шкалой как указано выше

"график времени": {"2020-01-22T00: 00: 00Z": 0, "2020-01-23T00: 00: 00Z": 0, <---- "2020- 01-24T00: 00: 00Z ": 0, </p>

У JSON много проблем с форматированием, и вам, возможно, придется разработать свой собственный метод их чтения, если они выходят за рамки общей нормы. это несколько раз.

import json

x = """[{
    "id": 28,
    "country": "Brazil",
    "country_code": "BR",
    "country_population": 201103330,
    "province": "",
    "last_updated": "2020-04-03T01:40:00.724616Z",
    "coordinates": {
      "latitude": "-14.235",
      "longitude": "-51.9253"
    },
    "latest": {
      "confirmed": 8044,
      "deaths": 324,
      "recovered": 0
    },
    "timelines": {
      "confirmed": {
        "latest": 8044,
        "timeline": {
          "2020-01-22T00:00:00Z": 0,
          "2020-01-23T00:00:00Z": 0,
          "2020-01-24T00:00:00Z": 0,
        }
      },
      "deaths": {
        "latest": 324,
        "timeline": {
          "2020-01-22T00:00:00Z": 0,
          "2020-01-23T00:00:00Z": 0,
          "2020-01-24T00:00:00Z": 0,
        }
      },
      "recovered": {
        "latest": 0,
        "timeline": {}
      }
    }
  }]"""

y = json.loads(x)
print(y)
0 голосов
/ 03 апреля 2020
print([[i, data[0]['timelines'][i]['timeline']] for i in data[0]['timelines']])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...