Dictionary einer JSON Abfrage verstehen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Nic0205
User
Beiträge: 4
Registriert: Mittwoch 18. November 2020, 07:54

Hallo zusammen,

ich bin noch ganz neu in der Python Welt. Zum lernen möchte ich mir gerne den aktuellen Covid19 Stand des RKI via JSON abrufen, in einem Dictionary speichern und dann über einzelne Spalten iterieren und zB. summieren.

Ich versehe die Dictionary in PYTHON leider noch nicht so ganz.

Ich habe folgenden Code:

Code: Alles auswählen

import urllib, json, ijson


url = "https://services7.arcgis.com/mOBPykOjAyBO2ZKk/arcgis/rest/services/RKI_COVID19/FeatureServer/0/query?where=IdLandkreis%20%3D%20'01062'&outFields=AnzahlFall,IdLandkreis,Datenstand&outSR=4326&f=json"
response = urllib.request.urlopen(url)
data1 = json.loads(response.read())
Das erzeugt dann das dictionary data1.

Es gibt darin 5 Felder / Keys "features, fields, globalIDFieldName, objectIDFieldName, uniqueIDField).

für die fields gibt es dann die Attribute an die ran möchte (AnzahlFall, IDLandkreis, Datenstand).

Ich schaffe es aber nicht, auf diese Attribute zuzugreifen und z.B. die Anzahl der Fälle aufzusummieren.
Ich verstehe hier das dictionary nicht so richtig. Wenn der Key "fields" ist - wie kann ich dann dann auf den value zugreifen, der ja anscheinend wieder ein dictionary ist?

Ich hoffe ich habe mich verständlich ausgedrückt und ihr könnt mir helfen.

Viele Grüße
Sirius3
User
Beiträge: 18274
Registriert: Sonntag 21. Oktober 2012, 17:20

Du mußt Dich halt Schritt für Schritt an die gewünschten Daten heranarbeiten. Was soll die 1 bei data1?

Code: Alles auswählen

features = data['features']
for feature in features:
    print(feature['attributes']['AnzahlFall'])
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

So sieht das fuer mich aus:

Code: Alles auswählen

{'features': [{'attributes': {'AnzahlFall': 1,
                              'Datenstand': '22.11.2020, 00:00 Uhr',
                              'IdLandkreis': '01062'}},
....
Mit

Code: Alles auswählen

import urllib.request
import json


url = "https://services7.arcgis.com/mOBPykOjAyBO2ZKk/arcgis/rest/services/RKI_COVID19/FeatureServer/0/query?where=IdLandkreis%20%3D%20'01062'&outFields=AnzahlFall,IdLandkreis,Datenstand&outSR=4326&f=json"
response = urllib.request.urlopen(url)
data = json.loads(response.read())

anzahl_total = sum(feature["attributes"]["AnzahlFall"] for feature in data["features"])
print(anzahl_total)
bekomme ich also die Summe aller Faelle.
Nic0205
User
Beiträge: 4
Registriert: Mittwoch 18. November 2020, 07:54

Vielen lieben Dank ihr zwei! Das funktioniert prima.

Habt Ihr noch einen Tip für mich, wo ich nachlesen kann, was da genau passiert? Ich steh da irgendwie noch auf dem Schlauch... Anfänger eben ;-)
Antworten