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

如何删除字典中source、dest键对应列表内重复IP并输出指定格式

问题根因

你此前使用{{output.msg|unique}}不生效的核心原因是作用对象错误:unique过滤器此时是对外层的字典列表做去重,而你的需求是对每个字典内部source、dest对应的子列表做去重,两者操作的对象完全不匹配。

解决方案

你可以通过遍历列表+单独处理子字段的方式实现需求,以下是Ansible场景下的常用实现方案:

方案1:提前预处理生成新变量

在playbook中添加如下任务,遍历原始输出并完成子列表去重:

- name: 对source和dest字段的IP段去重
  set_fact:
    processed_result: >-
      {{
        processed_result | default([]) +
        [
          item | combine({
            'source': item.source | unique,
            'dest': item.dest | unique
          })
        ]
      }}
  loop: "{{ output.msg }}"

执行完成后,processed_result变量就是符合你期望格式的输出,可以直接后续使用或者打印。

方案2:直接在Jinja渲染时处理

如果你是在模板文件中生成最终输出,可以直接在渲染逻辑里做去重,无需额外预处理变量:

[
{% for entry in output.msg %}
  {
    "Name": "{{ entry.Name }}",
    "source": {{ entry.source | unique | to_nice_json(indent=4) }},
    "dest": {{ entry.dest | unique | to_nice_json(indent=4) }}
  }{{ ',' if not loop.last }}
{% endfor %}
]

这里用to_nice_json可以保证输出的格式和你期望的缩进一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 19:54:04