在 Terraform 中,如何通过属性获取列表中不同的元组?

问题描述 投票:0回答:2

换句话说,有没有一种方法可以将元组的标识指定给某个函数,以便创建一组元组?

terraform
2个回答
0
投票

这有效:

locals {
  tuples = [
    {a=1, b=2},
    {a=1, b=3},
    {a=5, b=4},
  ]
  a_map = {for t in tuples: t.a => t...}
  distinct_tuples = [for k, v in a_map: v[0]]
}

0
投票

开发@lucas Ross 答案:

您只需一行命令即可完成:

 distinct_tuples = [for k, v in { for t in <your_tuples> : t.a => t... } : v[0]]

说明: 第一个循环将按具有相同“a”的每个元组分组到一个对象中。这是使用

...
完成的。你将拥有以下对象:

  map     = {
    "1" = [
        {
          a = 1
          b = 2
        },
        {
          a = 1
          b = 3
        },
    ]
    "5" = [
        {
            a = 5
            b = 4
        },
    ]
}

对于第二个循环,它将展平创建的地图并仅选择第一个值。然后你会得到以下对象:

[
    {
        a = 1
        b = 2
    },
    {
        a = 5
        b = 4
    },
]

参考资料:

© www.soinside.com 2019 - 2024. All rights reserved.