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

Montag 7. Januar 2019, 08:47

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: 9378
Registriert: Sonntag 21. Oktober 2012, 17:20

Montag 7. Januar 2019, 09:17

@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: 2527
Registriert: Samstag 2. Juni 2018, 10:21

Montag 7. Januar 2019, 12:39

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 tribal myths are true, for a given value of 'true'.” – Terry Pratchett, The Last Continent
schumatscher
User
Beiträge: 8
Registriert: Donnerstag 27. Dezember 2018, 14:53

Dienstag 8. Januar 2019, 18:46

@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