Maison > Article > développement back-end > Comment accéder aux membres du dictionnaire à l’aide de la notation par points en Python ?
La manipulation des membres du dictionnaire à l'aide de l'indexation traditionnelle (par exemple, mydict['val']) peut parfois s'avérer fastidieuse. Cette question explique comment améliorer l'accessibilité du dictionnaire en activant la notation par points (par exemple, mydict.val). De plus, il recherche une solution pour accéder aux dictionnaires imbriqués de la même manière.
La clé pour obtenir l'accès à la notation par points réside dans la création d'une classe personnalisée qui hérite de la classe dict intégrée. En définissant les méthodes __getattr__, __setattr__ et __delattr__, nous pouvons intercepter les opérations d'accès, de définition et de suppression d'attributs et les rediriger vers le dictionnaire sous-jacent. Voici un exemple d'une telle classe :
class dotdict(dict): """dot.notation access to dictionary attributes""" __getattr__ = dict.get __setattr__ = dict.__setitem__ __delattr__ = dict.__delitem__
Pour démontrer son utilisation, créons un exemple de dictionnaire :
mydict = {'val': 'it works'}
Maintenant, nous pouvons utiliser notre classe dotdict pour envelopper ce dictionnaire :
mydict = dotdict(mydict)
Cette transformation nous permet d'accéder aux membres du dictionnaire en utilisant la notation par points :
mydict.val # 'it works'
De plus, nous pouvons étendre ce concept aux dictionnaires imbriqués en créant des couches supplémentaires d'instances dotdict. Par exemple, nous pourrions créer un dictionnaire imbriqué dans mydict et le rendre accessible via plusieurs niveaux de notation par points :
nested_dict = {'val': 'nested works too'} mydict = dotdict(mydict) mydict.nested = dotdict(nested_dict)
Maintenant, nous pouvons accéder à la valeur du dictionnaire profondément imbriqué en utilisant une série de points :
mydict.nested.val # 'nested works too'
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!