terraform - 将列表转换为映射和合并值
问题描述
我正在尝试将项目列表转换为地图。该键将匹配项目中的一个键,如果该键已经存在,则该值应创建一个附加到列表的列表。
也许一个例子会更不稳定
variable "list" {
type = list(map(string))
default = [
{ a : "a", k : "k1" },
{ a : "b", k : "k1" },
{ a : "c", k : "k1" },
{ a : "d", k : "k2" },
{ a : "e", k : "k2" }
]
}
// Output wanted
// {
// "k1" : [{a: "a"}, {a: "b"}, {a: "c"}],
// "k2" : [{a: "d"}, {a: "e"}]
// }
谢谢
解决方案
您可以查看以下内容:
variable "list" {
type = list(map(string))
default = [
{ a : "a", k : "k1" },
{ a : "b", k : "k1" },
{ a : "c", k : "k1" },
{ a : "d", k : "k2" },
{ a : "e", k : "k2" }
]
}
output "test" {
value = {for item in var.list:
item["k"] => {a = item["a"]}...
}
}
上面的代码使用三点运算符,它产生:
test = {
"k1" = [
{
"a" = "a"
},
{
"a" = "b"
},
{
"a" = "c"
},
]
"k2" = [
{
"a" = "d"
},
{
"a" = "e"
},
]
}
推荐阅读
- c# - T 到 ActionResult 的隐式转换
不适用于某些类型 - voltdb - 如何在 VoltDB 中增加查询特定超时
- ruby-on-rails - RSpec:等待替代匹配
- android - 根据某些值平滑更改按钮的可绘制背景颜色
- mysql - 如何在 AWS Aurora (MYSQL) 中查看客户端与读取器和写入器的连接?
- angular - Angular Resolver - 从 HTTP 调用解析数据不起作用
- css - 使用 CSS 将图像添加到 ninjaforms
- jquery - 您可以在具有元刷新的页面上使用 jQuery AJAX $.get() 请求吗?
- algorithm - 算法分析中涉及的数学
- node.js - 根据环境使用不同的 ormconfig.json 文件