ausfiltern von Objekten in einem Array

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.
Zack
User
Beiträge: 47
Registriert: Dienstag 24. April 2007, 11:19

ausfiltern von Objekten in einem Array

Beitragvon Zack » Dienstag 29. April 2008, 22:38

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...
Zuletzt geändert von Zack am Dienstag 29. April 2008, 22:46, insgesamt 1-mal geändert.
Benutzeravatar
Trundle
User
Beiträge: 591
Registriert: Dienstag 3. Juli 2007, 16:45

Beitragvon Trundle » Dienstag 29. April 2008, 22:45

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.
Zack
User
Beiträge: 47
Registriert: Dienstag 24. April 2007, 11:19

Beitragvon Zack » Dienstag 29. April 2008, 22:50

Ha,
das ist natürlich super elegant =)
Super, vielen Dank Trundle!
mfg
Zack
EyDu
User
Beiträge: 4866
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Beitragvon EyDu » Dienstag 29. April 2008, 22:58

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.

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot]