You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ansible中遍历含嵌套列表的字典列表的实现方法问询

解决Ansible字典列表嵌套元素的遍历问题

我来帮你搞定这个需求!你需要用到Ansible的subelements过滤器,它正好适配这种外层字典列表+内层嵌套列表的遍历场景,能把每个字典的mykey和对应的inner_list元素一一配对输出。

完整Playbook示例

---
- hosts: localhost
  tasks:
    - debug:
        msg: "{{ item.0.mykey }} with {{ item.1 }}"
      loop: "{{ example | subelements('inner_list') }}"
  vars:
    example:
      - mykey: key1
        inner_list:
          - one
          - two
      - mykey: key2
        inner_list:
          - three
          - four

代码说明

  • subelements('inner_list'):这个过滤器会遍历example列表里的每个字典,把字典和它的inner_list元素拆分成成对的子项。
  • item.0:代表外层的字典,所以item.0.mykey就是当前字典的mykey值。
  • item.1:代表内层inner_list里的单个元素。

执行后输出

ok: [localhost] => (item=[{'mykey': 'key1', 'inner_list': ['one', 'two']}, 'one']) => {
    "msg": "key1 with one"
}
ok: [localhost] => (item=[{'mykey': 'key1', 'inner_list': ['one', 'two']}, 'two']) => {
    "msg": "key1 with two"
}
ok: [localhost] => (item=[{'mykey': 'key2', 'inner_list': ['three', 'four']}, 'three']) => {
    "msg": "key2 with three"
}
ok: [localhost] => (item=[{'mykey': 'key2', 'inner_list': ['three', 'four']}, 'four']) => {
    "msg": "key2 with four"
}

如果后续需要替换debug做其他操作(比如执行命令、修改文件等),只需要调整task的模块,item.0.mykey和item.1的引用方式保持不变就行。

内容的提问来源于stack exchange,提问作者George Shuklin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 03:45:18