Eintrag wenn for-schleife nicht fündig

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
Antik
User
Beiträge: 16
Registriert: Mittwoch 6. Februar 2019, 07:58

Hallo ich habe folgendes Problem: Ich habe zwei listen "AuftragsNr" und "daten", wobei daten mehrdimensional ist. Er soll daten nach der AuftragsNr durchsuchen und vergleichen und wenn dem so ist "datum" in eine neue Liste schreiben. Wenn er keine übereinstimmung gefunden hat soll er "x" eintragen. Die neue liste "LTs" soll allerdings genauso lang sein wie "AuftragsNr" meine momentante lösung verlängert diese natürlich. Kann mir jemand helfen? Danke

Code: Alles auswählen

 
daten=[[Auftragsnummer, Kunde, Preis, Datum], [12345, Mustermann, 100 Euro, 01.01.2019], [12222, Musterfrau, 200 Euro, 02.02.2019]]
AuftragsNr=[12345, 23456, 34567, 45678]  
LTs=[]
for i in AuftragsNr:
    for j in daten:
        if i==j[0]:
            LTs.append(j[3])
        else:
            LTs.append("x")
 
Benutzeravatar
sparrow
User
Beiträge: 4537
Registriert: Freitag 17. April 2009, 10:28

Warum werden diese Daten in dieser Form vorgehalten? Das ist mächtig unpraktisch.
Python bietet ja nicht umsonst verschiedene Arten von Datenstrukturen.
Mir ist noch nie ein Fall untergekommen, bei dem es richtig war, Daten in parallelen Listen vorzuhalten.

Auftragsdaten lassen sich gut in einem dict oder einem NamendTuple speichern. Dann muss man nicht magisch irgendwelche Indexe ansprechen, von denen in 2 Minuten keiner mehr weiß, was sich hinter j[3] verbirgt.
i und j sind wie LtS unglaublich schlechte Namen für Variablen.

Es wäre auch super, wenn du Code posten würdest, der funktioniert und keinen SyntaxError hervorbringt.

So und last but not least: Wenn du nur etwas "pro Auftragsnummer" oder in deinem Fall "pro i" tun willst, dann darf du das nicht in der For-Schleife für "pro Daten" oder in deinem Fall "pro j" tun. Merk dir in der inneren Schleife, ob die Bedingung erfüllt wurde und reagiere darauf in der äußeren.
Aber noch besser wäre, du bringst deine Datenstruktur in Ordnung.
Antik
User
Beiträge: 16
Registriert: Mittwoch 6. Februar 2019, 07:58

Vielen Dank für deine Antwort. Durch Sie konnte ich das Problem lösen. Das die variablen nicht sehr eindeutig sind ist klar, aber ist auch nur ein sehr kleines Programm für die UNI. Trotzdem werde ich versuchen sie demnächst eindeutiger zu bennen.
Antworten