你如何从 '''with_items''' 循环中将 dict 附加到数组?
- set_fact:
my_dict:
name: "{{ (item.content|from_json).name.0.value }}"
id: "{{ (item.content|from_json).nid.0.value }}"
email: "{{ (item.content|from_json).mail.0.value }}"
effort_members: "{{ effort_members }} + [ {{ my_dict }} ]"
with_items: "{{ members_obj.results }}"
Run Code Online (Sandbox Code Playgroud)
以上不起作用,但它很好地代表了我想要完成的工作。如果我提前定义了 dict,这个 append 可以正常工作,但它正在附加相同的 dict。
错误:
您缺少default第一次迭代的过滤器
您my_dict不必要地为每次迭代定义- 改用辅助变量
您的模板严重损坏,它创建了一个带有+内部的字符串而不是连接列表
固定代码:
- with_items: "{{ members_obj.results }}"
set_fact:
effort_members: "{{ effort_members|default([]) + [ my_dict ] }}"
vars:
my_dict:
name: "{{ (item.content|from_json).name.0.value }}"
id: "{{ (item.content|from_json).nid.0.value }}"
email: "{{ (item.content|from_json).mail.0.value }}"
Run Code Online (Sandbox Code Playgroud)