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

Terraform合并重复键映射:将同键值转为列表格式

合并Terraform中重复键的映射为列表格式

要实现将包含重复键的单键映射列表合并为「键对应值列表」的映射,可以通过提取键值对+分组聚合的方式完成,以下是具体实现:

完整解决方案

locals {
  sample_map = [
    {"aaa":"111"},
    {"bbb":"222"},
    {"aaa":"333"},
    {"bbb":"444"},
  ]

  sample_map_result = {
    for group in groupby(
      flatten([
        for mp in local.sample_map : [
          for k, v in mp : { key = k, value = v }
        ]
      ]),
      "key"
    ) : group.key => [for item in group.values : item.value]
  }
}

分步解释

  1. 提取统一格式的键值对
    先用嵌套for循环遍历原始列表中的每个单键映射,将每个键值对转换为{key = "xxx", value = "yyy"}的结构化对象,再通过flatten将嵌套列表拍平,得到所有键值对的扁平列表:

    flatten([
      for mp in local.sample_map : [
        for k, v in mp : { key = k, value = v }
      ]
    ])
    

    这一步会输出:

    [
      {"key":"aaa", "value":"111"},
      {"key":"bbb", "value":"222"},
      {"key":"aaa", "value":"333"},
      {"key":"bbb", "value":"444"},
    ]
    
  2. 按键分组并生成目标映射
    使用groupby函数按key字段分组,得到每个键对应的所有值对象,再通过for表达式遍历分组结果,将分组的key作为目标映射的键,将分组中所有value字段提取为列表作为对应值。

问题修正说明

你之前的代码缺失了键值对的结构化定义,导致后续无法进行分组聚合。补充{ key = k, value = v }的结构后,就能通过groupby顺利完成重复键的值合并。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 13:30:13