Dans la version 2.4, j'utilise toujours les opérations définies à ces fins. Si cela vaut la peine d'un avertissement (ou tout autre type de msg ou exception) lorsque certaines clés attendues manquent, en particulier, je fais:
missing = set(d).difference(('a', 'b', 'c'))
if missing:
logging.warn("Missing keys: %s", ', '.join(sorted(missing)))
else:
...
remplaçant l'appel, selon le cas logging.warn
, bien sûr (peut-être juste logging.info ou même logging.debug, peut-être logging.error, peut-être une exception).
La partie sorted
est pour la plupart cosmétique (j'aime les messages d'erreur fiables et reproductibles) mais aide aussi un peu à tester (quand je mock up logging.warn - ou quoi que ce soit - dans les tests, c'est bien de pouvoir attendez une chaîne spécifique, et si je n'ai pas trié le missing
, la chaîne d'avertissement peut varier, bien sûr, puisque les ensembles, comme les dicts, n'ont pas de concept d'ordre).
set (sub_dict) .issubset (parent_dict) semble fonctionner aussi, et c'est plus simple pour moi. Mais merci pour le pointeur :) – trojjer