Seite 1 von 1

ausfiltern von Objekten in einem Array

Verfasst: Dienstag 29. April 2008, 22:38
von Zack
Hi liebe Python Freunde =)
Ich habe hier ein Array mit viele dicts.
Ich würde jetzt gerne nur die Einträge die < ('ms':4) & > ('ms':1) sind, separieren.
Example:

Code: Alles auswählen

array =  [{'ms':1,'name':"a"},{'ms':2,'name':"b"},{'ms':3,'name':"c"},{'ms':4,'name':"d"}]
Nun würde ich das gerne elegant ausfiltern. "Falschen Versinnbildlicht" so:
newarray = array[x]['ms'>1:'ms'<4]

Hier auch ein funktionierendes Beispiel:

Code: Alles auswählen

new_array = []
for i in array:
  if (i['ms'] >1) and (i['ms']<4):
    new_array.append(i)
Ich hab dann mal etwas mit dieser schicken lambda Funktion herumprobiert, mit der man ja auch unter anderem solche Arrays sehr gut sortieren kann. Aber eine Filterung dies bezüglich hab ich leider nicht zum laufen bringen können.
Wenn dies aber möglich ist und mir einer vlt ein kleines Beispiel geben kann, wäre ich sehr verbunden.
Vielen dank im Voraus.
mfg
Zack

ps: ich hoffe die Topic ist richtig betitelt...

Verfasst: Dienstag 29. April 2008, 22:45
von Trundle
Mit einer List Comprehension ginge es:

Code: Alles auswählen

liste = [{'ms':1,'name':"a"},{'ms':2,'name':"b"},{'ms':3,'name':"c"},{'ms':4,'name':"d"}]
neue_liste = [d for d in liste if 1 < d['ms'] < 4]
Und in Python heißt der Datentyp Liste und nicht Array.

Verfasst: Dienstag 29. April 2008, 22:50
von Zack
Ha,
das ist natürlich super elegant =)
Super, vielen Dank Trundle!
mfg
Zack

Verfasst: Dienstag 29. April 2008, 22:58
von EyDu
Die "filter"-Funktion wäre eigentlich genau das, was du suchst. In diesem Fall sieht die LC allerdings viel schöner aus und ist auch noch kürzer.