Terraform - Как объединить элементы вложенного списка? - PullRequest
1 голос
/ 10 июля 2019

У меня есть два списка - ["l","h"], ["a","b"], и из этого мне нужно создать список вроде: ["la", "lb", "ha", "hb"] - возможно ли это?

Я пробовал с setproduct(), flatten() и join(), но самое близкое, что я мог получить, вот так:

> setproduct(["l","h"], ["a","b"])
[
  [
    "l",
    "a",
  ],
  [
    "l",
    "b",
  ],
  [
    "h",
    "a",
  ],
  [
    "h",
    "b",
  ],
]
#
> flatten(setproduct(["l","h"], ["a","b"]))
[
  "l",
  "a",
  "l",
  "b",
  "h",
  "a",
  "h",
  "b",
]

Я также могу присоединиться к одному элементу:

> join("",setproduct(["l","h"], ["a","b"])[1])
lb 

но еще предстоит выяснить, как извлечь из этого ["la", "lb", "ha", "hb"]. Любая помощь от кого-либо?

-S

Ответы [ 2 ]

1 голос
/ 11 июля 2019

Используя chunklist, flattern, join и for loop,

> [for test in chunklist(flatten(setproduct(["l","h"], ["a","b"])), 2): join("", test)]
[
  "la",
  "lb",
  "ha",
  "hb",
]
0 голосов
/ 13 июля 2019

Более простой способ сделать это - два вложенных выражения:

В консоли:

> flatten([for i in ["l","h"]: [for j in ["a","b"]: "${i}${j}"]])
[
  "la",
  "lb",
  "ha",
  "hb",
]

В HCL:

output "flat" {
  value = flatten([
    for i in ["l","h"]: [
      for j in ["a","b"]: "${i}${j}"
    ]])
}

Выходы:

Outputs:

flat = [
  "la",
  "lb",
  "ha",
  "hb",
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...