由元素列表组成的 YAML 键

Gif*_*per 3 python yaml pyyaml

我需要一个元素列表作为键,以便我可以检查是否满足多个条件。示例(不知道这是否可行以及语法是否正确):

mapping:
  c_id:
    [pak, gb]: '4711'
    [pak, ch]: '4712'
    [pak]: '4713'
  d_id:
    .
    .
    .
Run Code Online (Sandbox Code Playgroud)

现在我需要知道是否可以采用示例中的方法。

Ant*_*hon 6

您的 YAML 语法是正确的。唯一的技巧是,因为在 Python 中键必须是不可变的,所以您需要将对复杂键的访问指定为元组:

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')])
Run Code Online (Sandbox Code Playgroud)

给出:

4711
Run Code Online (Sandbox Code Playgroud)

请注意,这对于 PyYAML 是不可能的,因为它不支持序列作为键,您必须使用ruamel.yaml(免责声明:我是该包的作者)