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

Ansible中如何使用指定键列表过滤字典并循环遍历?

解决Ansible字典按预定义键列表过滤遍历的问题

你不需要在when条件里嵌套模板语法({{}}),直接在Jinja2表达式中引用customListOfKeys变量即可,正确的写法如下:

loop: "{{ lookup('ansible.builtin.dict', libraries) }}"
when: item.key in customListOfKeys

完整示例playbook

- name: 过滤字典中指定键的项
  hosts: localhost
  vars:
    libraries:
      aaa: lib_a
      bbb: lib_b
      ccc: lib_c
      ddd: lib_d
    customListOfKeys:
      - aaa
      - ccc
  tasks:
    - name: 遍历匹配的字典项
      debug:
        msg: "键: {{ item.key }}, 值: {{ item.value }}"
      loop: "{{ lookup('ansible.builtin.dict', libraries) }}"
      when: item.key in customListOfKeys

更高效的替代方案:提前过滤字典

如果字典规模较大,建议先过滤出符合条件的键值对再循环,避免在循环中逐个判断,示例如下:

- name: 提前过滤字典再遍历
  debug:
    msg: "键: {{ item.key }}, 值: {{ item.value }}"
  loop: "{{ libraries | dict2items | selectattr('key', 'in', customListOfKeys) | list }}"

这里用dict2items把字典转成键值对列表,再通过selectattr结合in测试筛选出符合条件的项,最后转成列表用于循环。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 00:18:18