Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

YAML key consisting of a list of elements

I need to have a list of elements as a key, so that I can check if several conditions are met. Example (don't know if this is possible and if the syntax is correct):

mapping:
  c_id:
    [pak, gb]: '4711'
    [pak, ch]: '4712'
    [pak]: '4713'
  d_id:
    .
    .
    .

Now I need to know if it is possible to have an approach as in the example.

like image 255
GiftZwergrapper Avatar asked Oct 26 '25 12:10

GiftZwergrapper


1 Answers

The syntax for your YAML is correct. The only trick is that because in Python a key has to be immutable you need to specify access to the complex key as a tuple:

import ruamel.yaml

yaml_str = """\
mapping:
  c_id:
    [pak, gb]: '4711'
    [pak, ch]: '4712'
    [pak]: '4713'
"""

data = ruamel.yaml.round_trip_load(yaml_str)
print(data['mapping']['c_id'][('pak', 'gb')])

gives:

4711

Please note that this is not possible with PyYAML, as it doesn't support sequences as keys, you have to use ruamel.yaml (disclaimer: I am the author of that package)

like image 74
Anthon Avatar answered Oct 29 '25 01:10

Anthon



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!