以下YAML引用如何覆盖前面的引用?
但是结果并没有达到我的预期,我希望合并对象中的最后一个结果是以下YAML引用如何覆盖前面的引用?,yaml,Yaml,但是结果并没有达到我的预期,我希望合并对象中的最后一个结果是 { merge: [ { x: 1, y: 1, r: 1 }, { x: 2, y: 2, r: 2 }, { x: 3, y: 3, r: 3 }, { x: 1, y: 2, r: 2, label: 'big/left/small' } ] } 如何使用YAML语法?使用YAML语法无法做到这一点,您的期望在多个层面上都是毫无
{
merge:
[
{ x: 1, y: 1, r: 1 },
{ x: 2, y: 2, r: 2 },
{ x: 3, y: 3, r: 3 },
{ x: 1, y: 2, r: 2, label: 'big/left/small' }
]
}
如何使用YAML语法?使用YAML语法无法做到这一点,您的期望在多个层面上都是毫无根据的
merge
)不会神奇地消失,因为它的值是一个序列标量,包含一个带有合并指示符的元素default
键“定义”锚点,并仅使用与合并
键关联的值:
{ x: 1, y: 3, r: 3, label: 'big/left/small' }.
(输出中键的顺序当然是随机的)使用YAML语法无法做到这一点,您的期望在多个层面上都是毫无根据的
merge
)不会神奇地消失,因为它的值是一个序列标量,包含一个带有合并指示符的元素default
键“定义”锚点,并仅使用与合并
键关联的值:
{ x: 1, y: 3, r: 3, label: 'big/left/small' }.
(输出中键的顺序当然是随机的)
import ruamel.yaml
yaml_str = """\
default:
- &LEFT { x: 1, y: 1, r: 1 }
- &BIG { x: 2, y: 2, r: 2 }
- &SMALL { x: 3, y: 3, r: 3}
merge:
# Override
<< : [ *BIG, *LEFT, *SMALL ]
x: 1
label: big/left/small
"""
data = ruamel.yaml.load(yaml_str)['merge']
print(data)
{'x': 1, 'r': 2, 'y': 2, 'label': 'big/left/small'}