gpt4 book ai didi

loops - Ansible - 组合两个以上列表时循环 + zip 的正确语法是什么?

转载 作者:行者123 更新时间:2023-12-03 16:23:48 25 4
gpt4 key购买 nike

组合超过 2 个列表时,我无法找到 loop + zip 的语法。

从 Ansible 2.5 开始,如图 here ,以下语法将 with_together 替换为 loop + zip:

- name: with_together
debug:
msg: "{{ item.0 }} - {{ item.1 }}"
with_together:
- "{{ list_one }}"
- "{{ list_two }}"

- name: with_together -> loop
debug:
msg: "{{ item.0 }} - {{ item.1 }}"
loop: "{{ list_one|zip(list_two)|list }}"

我的问题是,虽然在使用 with_together 时,您可以简单地附加列表,并用迭代数字引用它们,但我无法找到与循环 + zip 一起使用的方法。我试过了:
loop: "{{ list_one|zip(list_two)|zip(list_three)|zip(list_four)list }}"

没有成功。

最佳答案

您可以在 zip 过滤器本身内附加其他数组。

zip(list, list, list, ...)

例如:
- hosts: localhost
become: false
gather_facts: false
tasks:
- vars:
list_one:
- one
- two
list_two:
- three
- four
list_three:
- five
- six
debug:
msg: "{{ item.0 }} {{ item.1 }} {{ item.2 }}"
loop: "{{ list_one | zip(list_two, list_three) | list }}"

运行时:
PLAY [localhost] *********************************************************************************************************************************************

TASK [debug] *************************************************************************************************************************************************
ok: [localhost] => (item=['one', 'three', 'five']) => {
"msg": "one three five"
}
ok: [localhost] => (item=['two', 'four', 'six']) => {
"msg": "two four six"
}

PLAY RECAP ***************************************************************************************************************************************************
localhost : ok=1 changed=0 unreachable=0 failed=0

关于loops - Ansible - 组合两个以上列表时循环 + zip 的正确语法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55407094/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com