In 2.4 verwende ich immer Set-Operationen für solche Zwecke. Wenn es sich lohnt, eine Warnung (oder eine andere Art von msg oder Ausnahme), wenn einige erwartete Schlüssel fehlen, insbesondere, ich mache:
missing = set(d).difference(('a', 'b', 'c'))
if missing:
logging.warn("Missing keys: %s", ', '.join(sorted(missing)))
else:
...
den logging.warn
Anruf gegebenenfalls zu ersetzen, natürlich (vielleicht auch nur logging.info oder sogar logging.debug, vielleicht logging.error, vielleicht eine ausnahme). Der sorted
Teil ist größtenteils kosmetisch (ich mag zuverlässige, wiederholbare Fehlermeldungen), hilft aber auch ein bisschen beim Testen (wenn ich mloging.warn mock - oder was auch immer - in den Tests ist es schön zu können erwarte eine bestimmte Zeichenkette, und wenn ich die missing
Menge nicht sortierte, könnte die Warnungsschnur natürlich variieren, da Sätze, wie dicts, kein Konzept der Reihenfolge haben).
Set (sub_dict) .issubset (parent_dict) scheint auch zu arbeiten, und es ist einfacher für mich. Aber danke für den Zeiger :) – trojjer