我想比较两个列表 - 一个包含所有可用选项,第二个包含要选择的特定选项。例如,我有两个列表:
FullList:
- name: "Test1"
value1: "blabla123"
value2: "someothervalue"
- name: "Test2"
value1: "blsdfsdfasfabla"
value2: "someothervalue"
- name: "Test3"
value1: "sdjfbhsadbfv"
value2: "someothervalue"
- name: "Test4"
value1: "sdjkfnsjkf"
value2: "sdjkfnsjkf"
Run Code Online (Sandbox Code Playgroud)
它包含所有可用元素及其属性。
我有第二个列表,其中包含用于从完整列表中选择项目的特定键。
List1:
- "Test2"
- "Test3"
Run Code Online (Sandbox Code Playgroud)
我想从 FullList 中获取 List1 中的元素
即我期望
Result:
- name: "Test2"
value1: "blsdfsdfasfabla"
value2: "someothervalue"
- name: "Test3"
value1: "sdjfbhsadbfv"
value2: "someothervalue"
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激!
Vla*_*tka 12
Result: "{{ FullList|selectattr('name', 'in', List1) }}"
Run Code Online (Sandbox Code Playgroud)
给出了预期的结果
Result:
- {name: Test2, value1: blsdfsdfasfabla, value2: someothervalue}
- {name: Test3, value1: sdjfbhsadbfv, value2: someothervalue}
Run Code Online (Sandbox Code Playgroud)
用于测试的完整剧本示例
- hosts: all
vars:
FullList:
- {name: Test1, value1: blabla123, value2: someothervalue}
- {name: Test2, value1: blsdfsdfasfabla, value2: someothervalue}
- {name: Test3, value1: sdjfbhsadbfv, value2: someothervalue}
- {name: Test4, value1: sdjkfnsjkf, value2: sdjkfnsjkf}
List1: [Test2, Test3]
Result: "{{ FullList|selectattr('name', 'in', List1) }}"
tasks:
- debug:
var: Result|to_yaml
run_once: true
Run Code Online (Sandbox Code Playgroud)
请尝试如下打印
tasks:
- debug:
msg : "{{ item }}"
when: item.name in List1
loop: "{{FullList}}"
Run Code Online (Sandbox Code Playgroud)
要保存到变量,请按如下方式使用
- name: test
set_fact:
test: "{{ item }}"
when: item.name in List1
loop: "{{FullList}}"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
42794 次 |
| 最近记录: |