Vorstellung + Erstes Problem

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
pr0vil
User
Beiträge: 3
Registriert: Sonntag 16. Januar 2022, 22:55

Hallo zusammen,

ich bin der Nico und bin gerade in den letzten Zügen meines Maschinenbau-Studiums. Hab' im Studium Einblicke in C erhalten, und dadurch angefangen Python zu programmieren, weil ichs einfach viel schöner und kompakter finde :-) .. Benutze das mir angeeignete Wissen in erster Linie für Web-Scraping und Datenanalyse. Bin noch ganz frischer Anfänger und hoffe in dieser Community weiteren Input und vielleicht auch die ein oder andere Hilfestellung zu bekommen :-)

Das führt mich auch schon direkt zu meinem ersten Problem, an dem ich schon seit geraumer Zeit verzweifle. Ich hab folgende Daten im JSON-Format:

Code: Alles auswählen

{'10182060130': True, '10182060131': True, '10182060132': False, '10182060133': True, '10182060134': True, '10182060135': True, '10182060136': True}
Ich möchte nun alle Werte auslesen die als Value den wert "True" haben. Ich habe leider so gar keinen Ansatz was hier zu tun ist wenn sich der erste Wert jeweils unterscheidet :|

Freue mich darauf hier die ein oder andere Bekanntschaft zu machen und vielleicht findet sich ja sogar eine Lösung für mein Problem!

Grüße,
Nico
Benutzeravatar
sparrow
User
Beiträge: 4187
Registriert: Freitag 17. April 2009, 10:28

Bist du sicher, dass das JSON ist? Denn dann sollte "true" und "false" eigentlich klein geschrieben sein. Das sieht eher nach einem Python dict aus.

Falls es doch JSON ist, das kannst du mit dem passenden Modul parsen. Und dann wird daraus entsprechend ein dict.
__deets__
User
Beiträge: 14523
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das Problem lässt sich mit einer List comprehension lösen:

Code: Alles auswählen

filtered_values = [key for key, value in data.items() if value]
rogerb
User
Beiträge: 878
Registriert: Dienstag 26. November 2019, 23:24

@pr0vil,

es mag sein, dass du diese Daten beim Webscraping als JSON-Daten erhalten hast, aber in der Form wie sie jetzt vorliegen ist das definitiv ein Dictionary.

Man kann über einen Dictionary iterieren:

Code: Alles auswählen

data = {"10182060130": True, "10182060131": True, "10182060132": False, "10182060133": True, "10182060134": True, "10182060135": True, "10182060136": True}

all_true_values = []
for key, value in data.items():
    if value:
        all_true_values.append(key)
Wenn man über den Dictionary "data" mit items() iteriert, werden die Zahlenzeichenketten und die Wahrheitswerte jeweils paarweise in die Variablen "key" und "value" gepackt.
Dann kann man prüfen ob der Wahrheitswert in "value" True ist und die Zahlenzeichenkette in "key" der Liste "all_true_values" anhängen.

Dieser Code macht das gleiche nur etwas kompakter:

Code: Alles auswählen

data = {"10182060130": True, "10182060131": True, "10182060132": False, "10182060133": True, "10182060134": True, "10182060135": True, "10182060136": True}

all_true_values = [key for key, value in data.items() if value]
pr0vil
User
Beiträge: 3
Registriert: Sonntag 16. Januar 2022, 22:55

Vielen Dank für das ganze Feedback, Dictionary war tatsächlich das richtige Keyword und damit dann doch relativ einfach - Dankeschön! :geek:
Antworten