Duplikate in einer Liste 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
Benutzeravatar
sparrow
User
Beiträge: 4187
Registriert: Freitag 17. April 2009, 10:28

Hilft es dann überhaupt noch, festzustellen ob ein Eintrag doppelt vorhanden ist?
Ich würde ein dict aufbauen. Schlüssel ist die Mitarbeiternummer, Wert ein Tupel (anzahl_einträge, gesehen_minuten)
Dann hast du die Daten gruppiert und brachst hinterher nur noch das dict durchlaufen und entsprechend die Einträge bewerten.
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@schumatscher: die Einrückungen sind kaputt, das läuft also gar nicht. Die doppelte for-Schleife über `item` sieht auch falsch aus. Über ein Fileobjekt kann man nur einmal iterieren, so dass die innere Schleife auch nur beim ersten Lauf durchlaufen wird.
Du mußt auch vorher bei der Verarbeitung ansetzen. Lade die gesamte Datei in ein Wörterbuch, aber statt der Anzahl mit einer Liste von Zeiten. Dann kannst Du nachträglich auch die Summen ausrechnen und mit den Werten weiterarbeiten.
Benutzeravatar
__blackjack__
User
Beiträge: 13077
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Die IDs mit mehr als 1440 Minuten könnte man so ermitteln:

Code: Alles auswählen

#!/usr/bin/env python3
from collections import defaultdict


def main():
    id2minutes = defaultdict(int)
    with open('test.txt') as lines:
        for line in lines:
            row = line.split(';')
            id2minutes[row[1]] += int(row[3])
    
    ids = [id_ for id_, minutes in id2minutes.items() if minutes > 1440]
    print(ids)


if __name__ == '__main__':
    main()
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
schumatscher
User
Beiträge: 8
Registriert: Donnerstag 27. Dezember 2018, 14:53

@sirius: Du hast natürlich vollkommen recht. Die Einrückungen sind total panne und die beiden Schleifen ebenfalls (ich hatte den Code kopiert, ursprünglich waren ein paar Zeilen auskommentiert... :roll: Sorry für meine Schludrigkeit

@__blackjack__ : Deine Methode hat funktioniert (muss jetzt nur noch mal etwas tiefer in die collections gucken um es ganz zu verstehen)
Antworten