YAML key consisting of a list of elements

后端 未结 2 781
误落风尘
误落风尘 2021-01-16 22:10

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):

2条回答
  •  攒了一身酷
    2021-01-16 22:39

    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)

提交回复
热议问题