我有这个变量
result:
results:
- ansible_loop_var: item
item: /bigdata/gidn/data/input/datalake/test_workspace_3
stdout: |2-
snapshot_input
stdout_lines:
- ''
- snapshot_input
- ansible_loop_var: item
item: /bigdata/gidn/data/output/datalake/test_workspace_3
stdout: |2-
snapshot_output
stdout_lines:
- ''
- snapshot_output
- ansible_loop_var: item
item: /bigdata/gidn/projets/datalake/test_workspace_3
stdout: |2-
snapshot_projet_1
snapshot_projet_2
stdout_lines:
- ''
- snapshot_projet_1
- snapshot_projet_2
我想循环遍历 result.results 和每个项目,我再次循环遍历 stdout_lines 并创建一个像这样的字典:
{'path': /bigdata/gidn/data/input/datalake/test_workspace_3, 'id':snapshot_input},{'path': /bigdata/gidn/data/output/datalake/test_workspace_3, 'id':snapshot_output},{'path': /bigdata/gidn/projets/datalake/test_workspace_3, 'id':snapshot_projet_1},{'path': /bigdata/gidn/projets/datalake/test_workspace_3, 'id':snapshot_projet_2}
subelements
过滤器之类的东西来伪造它,如下所示:
- hosts: localhost
gather_facts: false
vars:
result:
results:
- ansible_loop_var: item
item: /bigdata/gidn/data/input/datalake/test_workspace_3
stdout: |2-
snapshot_input
stdout_lines:
- ''
- snapshot_input
- ansible_loop_var: item
item: /bigdata/gidn/data/output/datalake/test_workspace_3
stdout: |2-
snapshot_output
stdout_lines:
- ''
- snapshot_output
- ansible_loop_var: item
item: /bigdata/gidn/projects/datalake/test_workspace_3
stdout: |2-
snapshot_project_1
snapshot_project_2
stdout_lines:
- ''
- snapshot_project_1
- snapshot_project_2
tasks:
- loop: "{{ result.results|subelements('stdout_lines')}}"
when: item.1
vars:
myvar: []
set_fact:
myvar: "{{ myvar + [{'path': item.0.item, 'id': item.1}]}}"
- debug:
msg: "{{ myvar }}"
这将产生以下输出:
TASK [debug] *******************************************************************
ok: [localhost] => {
"msg": [
{
"id": "snapshot_input",
"path": "/bigdata/gidn/data/input/datalake/test_workspace_3"
},
{
"id": "snapshot_output",
"path": "/bigdata/gidn/data/output/datalake/test_workspace_3"
},
{
"id": "snapshot_project_1",
"path": "/bigdata/gidn/projects/datalake/test_workspace_3"
},
{
"id": "snapshot_project_2",
"path": "/bigdata/gidn/projects/datalake/test_workspace_3"
}
]
}
(注意:在你的问题中,你说,“我想创建一个像这样的字典......”,但你显示的示例是字典的列表,这就是我在这里生成的。)