Python Liste nach Inhalt untersuchen?

...komplette Frage anzeigen

1 Antwort

Hi nilsiscool,

vorneweg: ich bin kein Profi und meine Methoden sind nicht immer wasserdicht. Ein Python-Crack darf und soll mich gerne korrigieren.

Zunächst einmal muss ich den Aufbau der Listen bei dir in Frage stellen. Wir reden hier ja von Strings, also Textbausteinen und...naja, da ist Ärger vorprogrammiert. Wenn man überprüft, ob Strings identisch sind, gibt es oft Probleme (z.B. Groß- und Kleinschreibung, Zeichencodierung, End-of-Line-Charaktere etc).

Wenn ich dich richtig verstehe, möchtest du für jedes Listenelement aus Liste 1 prüfen, ob es in Liste 2 vorkommt und wenn ja, dann die Kategorie auslesen. Mag sein, dass es geht, aber nur mit vielem unnötigen Aufwand. Du müsstest zunächst jedes Element aus Liste 2 durchsuchen, ob das Element von Liste 1 (z.B. "Golf 7" darin vorkommt. Wenn ja, dann müsstest du dieses Element in Einzel-Zeichen aufsplitten und nachsehen, ab welcher Stelle die Kategorie beginnt, dann ein Zeichen überspringen und dann den Rest als Zahl auslesen, zurück-konvertieren und ausgeben. Mega umständlich und sperrig.

Hast du die Möglichkeit die Listen neu anzulegen? Dann würde ich dir zu einem "Dictionary" raten, bzw. manchmal auch "Hash-Map" genannt. Die sind exakt für Fragestellungen wie die deine gemacht. Kurz gesagt kannst du jedem Listenelement einen Schlüssel zuordnen. Du erhältst sowas wie ein Nachschlagewerk und kannst ab dann dieses Werk befragen. Du sagst: "BMW 535i" und die Hashmap gibt zurück "Kategorie 4" oder auch einfach "4", wie du willst. Das ist rechnerisch schnell und super einfach programmiert.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von nilsiscool
08.02.2016, 13:56

Danke für deine Antwort.

Nein ich möchte nicht nur die Kategorie ausgegeben haben, es reicht auch aus, wenn das komplette Listenelement ausgegeben wird, also Golf 7 Kategorie 1. macht das die Sache leichter? Er soll sogesagt nur nach dem String Golf 7 in der Liste 2 suchen und wo es drin vorkommt das Listenelement ausgeben.

0

Was möchtest Du wissen?