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

Terraform如何将map列表中相同key的value合并为单map下的列表结构

实现方案

你可以直接通过Terraform内置的for表达式和内置函数组合完成转换,不需要额外编写自定义逻辑,示例代码如下:

locals {
  # 你的原始ids数据源
  ids = [
    {
      "d81f6779-031f-4aa6-8e88-3242f65e35c0" = "478da44dc0aa8b0cdce5e7448c9509a5095a0f93"
    },
    {
      "d81f6779-031f-4aa6-8e88-3242f65e35c0" = "131e25de9ffd028fc9dab497f537eecb6d1b0faf"
    },
    {
      "e2e6deb4-8512-4089-b2ec-ef77447dabb7" = "f8ea0d6234a8ee2858a3ae04952c6c974337cf6a"
    },
    {
      "e2e6deb4-8512-4089-b2ec-ef77447dabb7" = "143b826f93e78d5a18ac9276972e80414262755e"
    },
    {
      "e2e6deb4-8512-4089-b2ec-ef77447dabb7" = "e7fe936edcc34c258c35aa19b9c702e553e3b265"
    },
  ]

  # 转换后的目标格式数据
  merged_ids = {
    for group_key, group_items in group_by(
      item => item.key,
      flatten([
        for single_map in local.ids : [
          for k, v in single_map : {
            key   = k
            value = v
          }
        ]
      ])
    ) : group_key => group_items[*].value
  }
}

# 输出验证结果
output "merged_ids" {
  value = local.merged_ids
}

转换逻辑说明

  1. 内层for循环遍历原始列表中的每个单键map,将每个键值对转换为包含key、value两个属性的对象
  2. 用flatten函数将嵌套的多维列表拍平为一维的对象列表
  3. 用group_by内置函数按key字段对所有对象分组,相同key的对象会被聚合到同一个数组中
  4. 外层for循环遍历分组结果,提取每个分组下所有对象的value字段组成数组,最终得到你需要的map格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 22:54:04