我有一个映射到局部变量的元组
locals {
my_val = [
{
region = "us-east-1"
value = 1000
data = 3000
},
{
region = "us-east-1"
value = 1001
data = 4000
},
{
region = "us-east2"
value = 1002
data = 5000
}
]
}
我需要根据该对的值删除重复项,这里我想放置区域
us-east-1
的条件,输出应该是
{
my_val = [
{
region = "us-east-1"
value = 1000
data = 3000
},
{
region = "us-east2"
value = 1002
data = 5000
}
]
}
需要帮助在地图对象的值上应用不同值。
如果我理解正确的话,这是一个简单的方法,你想要保持不同的
region
而不是不同的(region,value)
:
locals {
new_val = values(zipmap(local.my_val.*.region, local.my_val))
}
zipmap()
创建 region => {region,value}
的映射以重复 region
使用 local.my_val
最高索引的映射(因此后面的值会覆盖之前的值)。
values()
然后提取原始地图。
您还可以
revert()
输入和输出列表以保持最低索引。
如果您关心
value
是否唯一,只需将第一个参数相应地更改为 zipmap()
,但您可能需要将其转换为字符串。
如果你想保持不同的
(region,value)
(例如,具有多个值的相同区域),那么它会变得有点棘手,因为你需要创建一个组合键:
locals {
new_val = values(
zipmap(
[for m in local.my_val : join(":", [m.region, m.value])],
local.my_val
)
)
}
我希望这有帮助;)