[Python] Benedict : une autre façon de jouer avec…
Je suis souvent confronté au problème suivant : je récupère un json (API), je le transforme en dict et je veux faire des opérations dessus, mais je ne suis pas certain que tous les éléments sont présents.
Pour accéder à un élément, je dois soit faire :
if 'niveau_1' in elem and 'niveau_2' in elem['niveau_1'] and 'niveau_3' in elem['niveau_1']['niveau_2']:
...
Ou alors faire un try / except KeyError, mais je trouve ça très moche.
Une autre solution consiste à utiliser la librairie python-benedict. Cette librairie surcharge le dict et propose des fonctionnalités avancées sur leur manipulation. Comme par exemple le fait de pouvoir accéder aux éléments avec un équivalent de xpath.
Par exemple :
if 'niveau_1.niveau_2.niveau_3' in elem:
...
En plus, ça charge directement de json, des yaml, etc.