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

Ansible如何对对象中的location字段进行唯一值循环遍历?

Ansible 遍历location唯一值的简便方法

直接用Ansible内置的map和unique过滤器组合就能实现,不需要额外生成新对象,具体方案如下:

1. 仅遍历唯一的location值

如果只需要获取去重后的地点列表并循环,用下面的写法:

- name: 循环遍历唯一地点
  debug:
    msg: "当前处理地点: {{ item }}"
  loop: "{{ myobj | map(attribute='location') | unique }}"
  • map(attribute='location'):从myobj的每个元素中提取location字段,生成包含所有地点的列表(含重复值)
  • unique:对上述列表去重,得到仅含唯一值的地点列表

执行后会分别输出denver和paris两个地点,不会重复处理。

2. 按location分组并关联用户信息

如果需要同时获取每个唯一地点对应的用户列表,可以用groupby过滤器:

- name: 按地点分组遍历
  debug:
    msg: "地点 {{ item.0 }} 对应的用户: {{ item.1 | map(attribute='name') | join(', ') }}"
  loop: "{{ myobj | groupby('location') }}"
  • groupby('location'):将myobj按location字段分组,返回的每个元素是(地点字符串, 该地点下的用户对象列表)的元组
  • 后续可以通过map(attribute='name')提取该地点下的用户名,再用join拼接成易读的字符串

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 04:23:15