On 2013-04-14 22:41:52 +0200, Peter Otten said:
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)) ... ...
Ja danke, ich konnte meine Datenstruktur vereinfachen, damit hat sich das problem dann erledigt. Phil