Seite 1 von 1

Nach Objekt in Liste suchen

Verfasst: Freitag 24. August 2007, 11:12
von Kuttengeier
Hallo liebe User,

ich habe mal wieder ein Problem. Und zwar möchte ich ein Objekt aus einer Liste von Objekten suchen und mit diesem dann arbeiten. Es z.B. aus der Liste löschen. Mir will aber nicht einfallen, wie ich das sinnvoll ohne Indexgebrauch oder ohne Schleifen hinbekomme.

Die Objekte, die sich in der Liste befinden sind wie folgt aufgebaut:

object.id
object.title
object.content

Jedes der Objekte hat andere Feldinhalte. Uebergeben wird aber nur die id.

Wie schaffe ich es jetzt, dass ich nur nach der ID suche, und mit dem entsprechenden Objekt arbeiten kann. Möglichst ohne Listen Indizes.

Mit freundlichem Gruß,
Kuttengeier

Verfasst: Freitag 24. August 2007, 11:44
von penguin-p
Du könntest statt einer Liste ein Dictionary benutzen mit den Objekt-IDs als Schlüssel und den Objekten als Werte.
Dann kannst du direkt über die Objekt-ID auf das Objekt zugreifen.

Verfasst: Freitag 24. August 2007, 18:35
von Joghurt
Z. B. so

Code: Alles auswählen

>>> class O(object):
	def __init__(self, id_):
		self.id = id_
		self.content = 42
	def __repr__(self):
		return "<O id:%i content:%s>" % (self.id, self.content)

	
>>> liste = [O(1), O(2), O(3), O(4)]
>>> print liste
[<O id:1 content:42>, <O id:2 content:42>, <O id:3 content:42>, <O id:4 content:42>]
>>> objekte_mit_id_2 = [x for x in liste if x.id == 2]
>>> print objekte_mit_id_2
[<O id:2 content:42>]
>>> erstes_ergebnis = objekte_mit_id_2[0]
>>> print erstes_ergebnis
<O id:2 content:42>
>>> liste.remove(erstes_ergebnis)
>>> print liste
[<O id:1 content:42>, <O id:3 content:42>, <O id:4 content:42>]
Das funktioniert, weil Python immer mit Referenzen arbeitet

Verfasst: Freitag 31. August 2007, 11:06
von Kuttengeier
Ok, werde ich mir demnächst mal anschauen.

Habe leider die letzte Zeit wenig Zeit/Lust gehabt mich damit auseinanderzusetzen. Deswegen der etwas verspätetete beitrag. Aber ich werde von meinen erfolgen berichten :)

Mit freundlichem Gruß
Kuttengeier