[Python-de] dict filtern
Peter Otten
__peter__ at web.de
So Apr 14 22:41:52 CEST 2013
Philipp Kraus wrote:
> Ich habe das aktuell so:
>
> for tablename, tabledata in x.iteritems() :
> items = dict((contentname, contentdata) for contentname, contentdata
> in tabledata.iteritems() if contentdata.get("kind") == "a")
>
> damit habe in items die Elemente drin, die ich brauche. Ich übernehme aber
> damit alle Daten aus dem ursprünglichen dict (item i). Kann ich nun noch
> verschiedene Felder ausschließen? Also letztendlich so etwas
>
> items = dict((contentname, contentdata) if not contentname in ["kind",
> "type"] for contentname, contentdata in tabledata.iteritems() if
> contentdata.get("kind") == "a") ? d.h. ich möchte aus dicts item i noch
> verschiedene Elemente entfernen
Das wird langsam unübersichtlich; ich rate dir dazu, diesen Schritt in eine
eigene Funktion auszulagern:
def filter_data(d, excluded=frozenset(["kind", "type"])):
return dict((k, v) for k, v in d.iteritems() if k not in excluded)
for ...
items = dict((contentname, filter_data(contentdata)) ...
...
Mehr Informationen über die Mailingliste python-de