Access a dictionary using path style - Wed, Apr 6, 2022
Access a dictionary using path style
Recently I was programming some CI code in python for getting some information from yaml files. These yaml files were loaded using the yaml.load
function that returns a dict.
In order to access the values needed, I used code like this:
pod_name = pod_spec['metadata']['name']
Since this syntax can get quiet lengthy I thought that using a path syntax like
metadata.name would be more readable:
pod_name = pod_spec('metadata.name')
Well, this syntax wouldn’t work that easy, so I wrote a smaller helper function based on this nice code :
def find(element, dictionary): keys = element.split('.') rv = dictionary for key in keys: if re.search('\\[\\d+\\]', key): key = int(re.search('\\d+', key).group()) rv = rv[key] return rv
This function lets me right code like the following, accessing the values in a path style:
source_ref_name = find("spec.chart.spec.sourceRef.name", self.yaml_doc)
The code is a little bit more complicated than the initial code because of the introduction of the method. But I think this is outweighed by the nice way I can not use paths.
The complete code with an example can be found here .