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

使用Ansible Jinja2统计列表字段出现次数并生成对应字典

问题根源

你的原有代码计数逻辑错误,j.count(j)是对单个用户名字符串自身统计匹配次数,返回值永远为1,因此所有用户的计数结果都会是1。

修正方案

方案1:最小修改原有逻辑

仅调整计数的取值来源,同时对去重后的用户名循环避免重复更新操作:

- set_fact:
    users: |-
      {%- set user_list = [] -%}
      {%- set u_dict = {} -%}
      {%- for i in str_lst -%}
         {{ user_list.append(i.split()[1]) }}
      {%- endfor -%}
      {%- for j in user_list | unique -%}
        {{ u_dict.update({j: user_list.count(j)}) }}
      {%- endfor -%}
      {{ u_dict }}

- debug: var=users

运行后即可得到你期望的{"user1": 3, "user2": 2}输出。

方案2:更简洁的过滤器写法

如果你的Ansible环境安装了community.general集合(绝大多数默认发行版都已预装),可以直接用counter过滤器实现,无需手写循环:

- set_fact:
    users: "{{ str_lst | map('split') | map(attribute=1) | community.general.counter }}"

- debug: var=users

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 05:24:03