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

Ansible中如何将字典列表的value字段从逗号分隔字符串转为IP列表

Ansible 字典列表字段格式转换解决方案

核心实现逻辑

仅需对list_report列表中的每一个字典元素做如下处理:

  • 保留原有objectid字段的取值不变
  • 对value字段调用字符串split(',')方法,按逗号拆分生成IP列表

实现方案1:显式循环构建新列表

直接通过loop遍历原有列表,逐元素重构后存入新变量,逻辑直观易调试:

# 先将原始list_report暂存到临时变量,避免循环过程中覆盖原始值导致异常
- name: 暂存原始list_report数据
  set_fact:
    original_list_report: "{{ list_report }}"

- name: 重构list_report数据结构
  set_fact:
    list_report: "{{ list_report | default([]) + [{'objectid': item.objectid, 'value': item.value.split(',')}] }}"
  loop: "{{ original_list_report }}"

实现方案2:Jinja2表达式单行转换(更简洁)

通过Jinja2模板语法批量处理列表元素,无需显式写循环,代码更精简:

- name: 重构list_report数据结构
  set_fact:
    list_report: >-
      {% set res = [] %}
      {% for item in list_report %}
      {{ res.append({'objectid': item.objectid, 'value': item.value.split(',')}) }}
      {% endfor %}
      {{ res }}

异常兼容处理

注意:如果存在value字段为空的场景,可以在拆分时添加默认值兜底,避免空值调用split方法报错:

# 拆分逻辑替换为如下写法
'value': item.value | default('').split(',')

结果验证

执行如下任务即可验证输出结构是否符合预期:

- name: 打印转换后的list_report
  debug:
    var: list_report

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 04:06:00