Seite 1 von 1

Vorstellung + Erstes Problem

Verfasst: Sonntag 16. Januar 2022, 23:01
von pr0vil
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

Re: Vorstellung + Erstes Problem

Verfasst: Sonntag 16. Januar 2022, 23:12
von sparrow
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.

Re: Vorstellung + Erstes Problem

Verfasst: Sonntag 16. Januar 2022, 23:24
von __deets__
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]

Re: Vorstellung + Erstes Problem

Verfasst: Sonntag 16. Januar 2022, 23:40
von rogerb
@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]

Re: Vorstellung + Erstes Problem

Verfasst: Mittwoch 19. Januar 2022, 01:04
von pr0vil
Vielen Dank für das ganze Feedback, Dictionary war tatsächlich das richtige Keyword und damit dann doch relativ einfach - Dankeschön! :geek: