Python';terraform中的s-zip类函数

Python';terraform中的s-zip类函数,terraform,Terraform,我有3个列表。有没有办法在terraform中逐个添加每个列表中的元素。像下面这样 for a, b, c in UNKNOWN_FUNC([1, 2, 3], [4, 5, 6], [7, 8, 9]): ... ... 输出应该是这样的 [1, 4, 7] [2, 5, 8] [3, 6, 9] 注意:我尝试了zipmap,但它不起作用 注2:列表的长度始终相同您可以为此构建一个帮助列表,然后对其进行迭代。例如: variable "l1" { defau

我有3个列表。有没有办法在terraform中逐个添加每个列表中的元素。像下面这样

for a, b, c in UNKNOWN_FUNC([1, 2, 3], [4, 5, 6], [7, 8, 9]):
  ...
  ...
输出应该是这样的

[1, 4, 7]
[2, 5, 8]
[3, 6, 9]
注意:我尝试了
zipmap
,但它不起作用


注2:列表的长度始终相同

您可以为此构建一个帮助列表,然后对其进行迭代。例如:

variable "l1" {
  default = [1, 2, 3]
}

variable "l2" {
  default = [4, 5, 6]
}


variable "l3" {
  default = [7, 8, 9]
}


locals {

  new_list = [ for idx in range(0, 3):
            [ var.l1[idx], var.l2[idx], var.l3[idx] ]
        ]

}
并在
中为每个
使用它:


resource "ddd" "ddd"{
  for_each = {for idx, val in local.new_list: idx => val}

  some_attribute1 = each.value[0]
  some_attribute2 = each.value[1]
  some_attribute3 = each.value[2]

您可以为此构建一个帮助列表,然后对其进行迭代。例如:

variable "l1" {
  default = [1, 2, 3]
}

variable "l2" {
  default = [4, 5, 6]
}


variable "l3" {
  default = [7, 8, 9]
}


locals {

  new_list = [ for idx in range(0, 3):
            [ var.l1[idx], var.l2[idx], var.l3[idx] ]
        ]

}
并在
中为每个
使用它:


resource "ddd" "ddd"{
  for_each = {for idx, val in local.new_list: idx => val}

  some_attribute1 = each.value[0]
  some_attribute2 = each.value[1]
  some_attribute3 = each.value[2]

我不能完全确定我理解您的目标是什么,但它似乎涉及到重新组织元素以按其索引对它们进行分组

假设所有列表的长度总是相同的,那么可以使用a来实现,这与Python中的列表或映射理解相当

locals {
  lists = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9],
  ]

  pivot = [
    for i, v in local.lists[0] : [
      local.lists[0][i],
      local.lists[1][i],
      local.lists[2][i],
    ]
  ]
}

这将使用第一个列表的长度作为所有列表长度的代理,因此如果不是所有列表都具有相同的长度,则此操作将失败。

我不完全确定我是否理解您的目标,但它似乎涉及到重新组织元素以按其索引对其进行分组

假设所有列表的长度总是相同的,那么可以使用a来实现,这与Python中的列表或映射理解相当

locals {
  lists = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9],
  ]

  pivot = [
    for i, v in local.lists[0] : [
      local.lists[0][i],
      local.lists[1][i],
      local.lists[2][i],
    ]
  ]
}
这将使用第一个列表的长度作为所有列表长度的代理,因此如果不是所有列表都具有相同的长度,这将失败