Seite 1 von 1

Listen mit Listenelementen durchsuchen

Verfasst: Sonntag 29. November 2009, 13:12
von mar-ko
Hallo,

seit geraumer Zeit sitze ich vor diesem Problem. Ich habe eine Liste, die mehrere Listen enthält:

Aufgebaut ist sie nach folgendem Prinzip:
Baujahr, Reihe, Artikelnummer, Artikelname

Bsp.:
[[1979,classic space,885,Raumgleiter],
[1979,classic space,886,Astronautenauto],...]

Ich möchte diese Liste nach einem Begriff durchsuchen lassen. Falls der Begriff öfter auftaucht, soll er einer zweiten Liste hinzugefügt und ausgegeben werden.
Es soll dabei nicht nur der Begriff einer 2. Liste hinzugefügt werden, sondern das dazugehörige Listenelement.

Ich würde mich über Denkansätze/Hinweise sehr freuen (Über die Lösung natürlich auch :-).


Gruß mar-ko

Verfasst: Sonntag 29. November 2009, 13:36
von EyDu
Hallo.

Die einfachste Möglichkeit ist wahrscheinlich die filter-Funktion zu verwenden oder eine list-comprehension dafür zu schreiben. Ich rate dir aber eher zu einer Datenbank. Damit bist du wesentlich flexibler und kannst auch komplizierte anfragen relativ leicht gestalten. Schau dir dazu mal SQLite an, das genügt wahrscheinlich schon.

Verfasst: Sonntag 29. November 2009, 14:11
von sma

Code: Alles auswählen

rows = [
    [1979,'classic space',885,'Raumgleiter'], 
    [1979,'classic space',886,'Astronautenauto']
]

def find_by_description(s):
    return [row for row in rows if s in row[3]]

print find_by_description("Raum")
Stefan

Verfasst: Montag 30. November 2009, 18:21
von mar-ko
Vielen Dank euch beiden. :D

Über kurz oder lang ist eine Datenbank wohl die elegantere Lösung.
Jetzt werde ich die list comprehension erstmal in mein Programm einfügen. Vielen Dank sma.


Gruß mar-ko

Verfasst: Montag 30. November 2009, 18:51
von ms4py
Eine Datenstruktur mit Klassen wäre eventuell auch geeignet, wenn es nicht zu viele Daten sind. Oder natürlich beides (also ORM, wie z.B. SQLAlchemy).