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

Ansible:如何将list2元素与list1对应元素合并为同一行元素?

问题描述

现有两个列表:

list1: [
    "xxxx",
    "yyyyy",
    "yyyyy",
    "yyyyy"
]
list2: [
    "xxxx",
    "yyyyy",
    "yyyyy",
    "yyyyy"
]

我原本用以下代码尝试合并两个列表:

set_fact:
  list1: "{{ list1 | default([]) + list2 }}"
loop: "{{ list2 }}"

这段代码虽然能运行,但结果是把list2的所有元素直接追加到list1后面,变成这样:

[
    "xxxx",
    "yyyyy",
    "yyyyy",
    "yyyyy",
    "xxxx",
    "yyyyy",
    "yyyyy",
    "yyyyy"
]

而我想要的是对应位置的元素拼接合并,最终结果应该是:

[
    "xxxxxxxx",
    "yyyyyyyyyy",
    "yyyyyyyyyy",
    "yyyyyyyyyy"
]
解决方案

你的循环逻辑完全错误,不需要遍历list2来追加,而是要利用Ansible的过滤器实现对应元素的拼接:

set_fact:
  merged_list: "{{ list1 | zip(list2) | map('join') | list }}"

逻辑说明:

  1. zip(list2):将list1和list2的对应位置元素配对,生成类似[("xxxx", "xxxx"), ("yyyyy", "yyyyy"), ...]的元组列表;
  2. map('join'):对每个元组执行字符串拼接操作,把元组里的两个元素合并成一个字符串;
  3. list:把处理后的结果转换成列表格式。

这样就能得到你期望的、对应元素合并后的新列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 10:15:55