Можно либо перечислить выбранных студентов элемент за элементом. Например,
- name: Process selected students
debug:
msg: "PROCESS THE GRADES [{{ item.grade }}]
OF SELECTED STUDENT {{ item.name }}"
loop: "{{ all_students_list|
selectattr('name', 'in', selected_students_list)|
list }}"
дает
msg: PROCESS THE GRADES [8] OF SELECTED STUDENT Alice
msg: PROCESS THE GRADES [7] OF SELECTED STUDENT Bob
Или, чтобы отобразить весь список сразу. Например,
- name: Process selected students
debug:
msg: "{{ msg.split('\n')[:-1] }}"
vars:
my_list: "{{ all_students_list|
selectattr('name', 'in', selected_students_list)|
list }}"
msg: |
PROCESS THE GRADES OF SELECTED STUDENTS
{{ my_list|to_yaml }}
дает
msg:
- PROCESS THE GRADES OF SELECTED STUDENTS
- '- {grade: 8, name: Alice}'
- '- {grade: 7, name: Bob}'
Если данные находятся в словаре, а не в списке, листинг элемента за элементом очень прост. Например,
- name: Test
hosts: localhost
vars:
- all_students_dict:
Charlie:
grade: 9
Alice:
grade: 8
Bob:
grade: 7
Darla:
grade: 10
Edith:
grade: 11
- selected_students_list:
- Alice
- Bob
tasks:
- name: Process selected students
debug:
msg: "PROCESS THE GRADES [{{ all_students_dict[item].grade }}]
OF SELECTED STUDENT {{ item }}"
loop: "{{ selected_students_list }}"
дает
msg: PROCESS THE GRADES [8] OF SELECTED STUDENT Alice
msg: PROCESS THE GRADES [7] OF SELECTED STUDENT Bob
Можно использовать фильтры dict2items и items2dict для создания словаря выбранных студентов. Например,
- name: Process selected students
debug:
msg: "{{ msg.split('\n')[:-1] }}"
vars:
my_dict: "{{ all_students_dict|
dict2items|
selectattr('key', 'in', selected_students_list)|
list|
items2dict }}"
msg: |
PROCESS THE GRADES OF SELECTED STUDENTS
{{ my_dict|to_yaml }}
дает
msg:
- PROCESS THE GRADES OF SELECTED STUDENTS
- 'Alice: {grade: 8}'
- 'Bob: {grade: 7}