<p>另一种解决方案是使用HiYaPyCo(<a href="https://pypi.org/project/HiYaPyCo/" rel="nofollow noreferrer">https://pypi.org/project/HiYaPyCo/</a>),它实现了保留元素顺序的合并。</p>
<pre><code>import hiyapyco
yaml1 = """resources:
server_group_1:
type: OS::Nova::ServerGroup
properties:
name: { get_param: [server_groups, 5] }
policies: [ { get_param: [server_group_types, 5] } ]
server_group_2:
type: OS::Nova::ServerGroup
properties:
name: { get_param: [server_groups, 8] }
policies: [ { get_param: [server_group_types, 8] } ]
output:
check_1:
description: Name of the instance
value: { get_attr: [check_1, vname] }"""
yaml2 = """resources:
server_group_4:
type: OS::Nova::ServerGroup
properties:
name: { get_param: [server_groups, 4] }
policies: [ { get_param: [server_group_types, 4] } ]
server_group_9:
type: OS::Nova::ServerGroup
properties:
name: { get_param: [server_groups, 7] }
policies: [ { get_param: [server_group_types, 7] } ]
output:
check_6:
description: Name of the instance
value: { get_attr: [check_6, vname] }"""
merged_yaml = hiyapyco.load([yaml1, yaml2], method=hiyapyco.METHOD_MERGE)
print(hiyapyco.dump(merged_yaml))
</code></pre>
<p>输出:</p>
<pre><code>resources:
server_group_1:
type: OS::Nova::ServerGroup
properties:
name:
get_param: [server_groups, 5]
policies:
- get_param: [server_group_types, 5]
server_group_2:
type: OS::Nova::ServerGroup
properties:
name:
get_param: [server_groups, 8]
policies:
- get_param: [server_group_types, 8]
server_group_4:
type: OS::Nova::ServerGroup
properties:
name:
get_param: [server_groups, 4]
policies:
- get_param: [server_group_types, 4]
server_group_9:
type: OS::Nova::ServerGroup
properties:
name:
get_param: [server_groups, 7]
policies:
- get_param: [server_group_types, 7]
output:
check_1:
description: Name of the instance
value:
get_attr: [check_1, vname]
check_6:
description: Name of the instance
value:
get_attr: [check_6, vname]
</code></pre>