[Python-de] dict filtern

Philipp Kraus philipp.kraus at flashpixx.de
So Apr 14 18:52:18 CEST 2013


Am 14.04.2013 um 18:01 schrieb Sebastian Bechtel:

> Am 14.04.2013 um 17:44 schrieb Philipp Kraus <philipp.kraus at flashpixx.de>:
> 
>> Hallo,
>> 
>> ich habe folgendes dict:
>> x = {
>> 
>> "data1" : {
>>     "item 1" : {
>>                "kind" : "a"
>>               ....
>>       } ,
>> 
>>     "item 2" : {
>>                "kind" : "a"
>>               ....
>>       },
>> 
>>     "item 3" : {
>>                "kind" : "b"
>>               ....
>>       }
>> },
>> ....
>> }
>> 
>> 
>> ich durchlaufe das dict so:
>> 
>> for key, value in x.iteritems() :
>>   y = ?
>>   if y :
>>        do something with y
>> 
>> 
>> Ich möchte an der Stelle ? prüfen, ob sich innerhalb der Kindelemente von value ein Feld
>> mit dem Typ "a" enthält, wenn dies der Fall ist, soll der if Zweig ausgeführt werden. Ich würde
>> jetzt mit filter versuchen das zu lösen und dann via if prüfen, ob die Liste leer ist. Geht das
>> vielleicht irgendwie kompakter z.B.
>> 
>> if any(value.items.child("kind") == "a")
>> 
>> Danke
>> 
>> Phil
>> 
>> _______________________________________________
>> python-de maillist  -  python-de at python.org
>> http://mail.python.org/mailman/listinfo/python-de
> 
> Du kannst einfach drauf zugreifen und bei Misserfolg die Exception behandeln

Das geht hier nicht, denn ich muss auf die Existenz prüfen, nur wenn mind. ein Element vorhanden
ist, dann darf ich den if Zweig ausführen, wenn nicht, darf er gar nicht ausgeführt werden.
Im Grunde wäre die Frage "ist mindestens ein Element mit kind == a vorhanden, wenn ja, führe für jedes
Element mit kind == a aus, wenn nein, dann überspringe Ausführung". 
Im Grunde entspricht kind einem Enum und anhand dessen muss die Verarbeitung unterschiedlich statt finden


Mehr Informationen über die Mailingliste python-de