[Python-de] dict filtern

Peter Otten __peter__ at web.de
So Apr 14 19:40:11 CEST 2013


Philipp Kraus wrote:

> 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")

Ich werde aus deiner Problembeschreibung nicht ganz schlau. Wenn es sich bei 
allen Werten um zweifach verschachtelte dicts handelt:

for key, outer in x.iteritems():
    if any(inner.get("kind") == "a" for inner in outer.itervalues()):
        ...





Mehr Informationen über die Mailingliste python-de