[FIXED] Liste der Werte in der JSON-Datei

Ausgabe

Ich habe eine JSON-Datei, die so aussieht (gekürzt):

data = {
    "station": [
        {
            "key": "105285",
            "name": "Borlänge Sol",
            "owner": "SMHI",
            "ownerCategory": "CLIMATE",
            "measuringStations": "CORE",
            "from": 536457600000,
            "to": 1664719200000,
            "height": 168.0,
            "latitude": 60.4878,
            "longitude": 15.4297,
            "value": [{"date": 1664719200000, "value": "0", "quality": "Y"}],
        },
        {
            "key": "71415",
            "name": "Göteborg Sol",
            "owner": "SMHI",
            "ownerCategory": "CLIMATE",
            "measuringStations": "CORE",
            "from": 1286409600000,
            "to": 1664719200000,
            "height": 84.824,
            "latitude": 57.6879,
            "longitude": 11.9796,
            "value": [{"date": 1664719200000, "value": "1429", "quality": "Y"}],
        },
        {
            "key": "68545",
            "name": "Hoburg Sol",
            "owner": "SMHI",
            "ownerCategory": "CLIMATE",
            "measuringStations": "CORE",
            "from": 1352991600000,
            "to": 1664719200000,
            "height": 36.0,
            "latitude": 56.921,
            "longitude": 18.1506,
            "value": [{"date": 1664719200000, "value": "0", "quality": "Y"}],
        },
        {
            "key": "65075",
            "name": "Karlskrona Sol",
            "owner": "SMHI",
            "ownerCategory": "CLIMATE",
            "measuringStations": "CORE",
            "from": 1246406400000,
            "to": 1664719200000,
            "height": 10.0,
            "latitude": 56.1091,
            "longitude": 15.587,
            "value": [{"date": 1664719200000, "value": "3586", "quality": "Y"}],
        },
        {
            "key": "178985",
            "name": "Tarfala Sol",
            "owner": "SMHI",
            "ownerCategory": "CLIMATE",
            "measuringStations": "CORE",
            "from": 1167609600000,
            "to": 1664719200000,
            "height": 1144.0,
            "latitude": 67.9123,
            "longitude": 18.6101,
            "value": None,
        },
    ]
}

Ich möchte eine Liste der Werte erstellen, die darin enthalten sind 'value', dh [0, 1429, 0, 3586]ich habe dies versucht, aber es gibt einen Fehler zurück:

value_dict = [data['station'][i]['value']['value'] for i in range(len(data['station'])) if data['station'][i]['value'][0]['value'] is not None]

Wie kann ich auf diese Werte zugreifen? Ist dies auch der richtige Weg, um NoneType-Werte (wie den letzten) zu ignorieren?

Lösung

Sie können Werte wie folgt erhalten:

In [1]: [item.get('value')[0].get('value') for item in data['station']]
Out[1]: ['0', '1429', '0', '3586']

Mit können Sie die Werte filterignorieren .None

list(filter(None, [item.get('value')[0].get('value') for item in data['station']]))


Beantwortet von –
Rahul KP


Antwort geprüft von –
David Goodson (FixError Volunteer)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like