doppelte Werte in einer text file finden

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
naomii2608
User
Beiträge: 11
Registriert: Dienstag 16. Juni 2020, 18:00

Hallo,

Ich versuche mich seit einigen Tagen an einem Programm, ich komme aber an der schwierigsten Stelle nicht weiter. Der input sieht in etwa so aus:

Sensor: Uhrzeit: Kennzeichen:
1 13:00:00 45-NK-JX
1 13:00:03 DX-89-EH
1 13:00:09 JV-20-EL
2 13:00:10 RW-MJ-73
1 13:00:11 ZS-24-74
2 13:00:14 07-SD-12
2 13:00:18 GX-62-38
1 13:00:19 09-PQ-23
2 13:00:20 45-NK-JX
1 13:00:20 NG-24-DB
2 13:00:21 DX-89-EH
2 13:00:22 JV-20-EL
2 13:00:30 ZS-24-74
1 13:00:33 QW-23-56
2 13:00:35 09-PQ-23
2 13:00:40 NG-24-DB

Es geht darum mithilfe eins dictionaries die Paare der Kennzeichen heraus zu suchen, um mit ihnen zu rechnen. Jedoch schaffe ich es nicht, die Paare zusammen zu suchen.
Bisher sieht mein code so aus:

Code: Alles auswählen


file = open("traffic.input.txt").read()
lines = file.splitlines()
traffic = {}
for line in lines:

    if line != "50":
        row = line.split('\t')
        sensor = row[0]
        times = row[1]
        license_plate = row[-1]

        if license_plate in traffic:
            traffic[license_plate] = times
            print(traffic)
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Waum benutzt du nicht das csv-Modul oder pandas? Und warum pruefst du auf "50" in den Zeilen?

Zum zaehlen gibt es collections.Counter
Sirius3
User
Beiträge: 18272
Registriert: Sonntag 21. Oktober 2012, 17:20

Zum Lesen gibt es das csv-Modul.
Dateien die man öffnet sollte man auch wieder schließen, am besten durch das with-Statement.
Du hast nicht verraten, was du berechnen willst. Ich vermute mal du brauchst die Uhrzeiten von Sensor 1 und 2. Also brauchst du ein verschachteltes Wörterbuch. Erste Ebene das Kennzeichen und drunter ein Wörterbuch mit Sensornummern.
Benutzeravatar
DeaD_EyE
User
Beiträge: 1240
Registriert: Sonntag 19. September 2010, 13:45
Wohnort: Hagen
Kontaktdaten:

Nach welchen doppelten Werten suchst du denn?
Definiere doppelt.

1) Kennzeichen
2) Sensor + Kennzeichen
3) Sensor + Uhrzeit + Kennzeichen (was in der Realität unmöglich ist)
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
Benutzeravatar
__blackjack__
User
Beiträge: 14052
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@DeaD_EyE: Ad 3) Das hängt von den Variablen d Abstand zwischen den Sensoren, v Geschwindigkeit der Fahrzeuge, und r Auflösung der Zeiterfassung ab. 😜
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Benutzeravatar
__blackjack__
User
Beiträge: 14052
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Nach den Nummernschildern sollte man im Wörterbuch eventuell nicht mit der nächsten Ebene mit Sensornummern weitermachen, denn ich denke für die Weiterverarbeitung ist beispielsweise eine Liste mit Tupeln aus Zeit und Sensornummer eventuell praktischer, die man als nächsten Schritt dann mal sortieren könnte oder zumindest auf sortiert sein testen könnte wenn die Eingabedaten das hergeben sollten und man das noch nicht vorher getestet hat.

Hier kommt es dann auch zu weiteren Fragen welche Fälle alle abgedeckt werden sollen. Was passiert wenn das Fahrzeug vor Beginn der Aufzeichnung schon auf der Strecke war oder nach Ende der Aufzeichnung immer noch auf der Strecke ist? Erkennt man das wenn es mehr als eine Durchfahrt gibt? Gibt es Fahrzeuge die auf der Strecke wenden?

Selbst wenn es solche Sonderfälle nicht gibt, also nicht geben dürfte, wie soll das Programm damit umgehen wenn die trotzdem in den Daten vorkommen? Einfach falsche Sachen ausrechnen? Abbrechen? Eine Warnung ausgeben und unmögliche Werte ignorieren?
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Antworten