我有一个映射到局部变量的元组
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
}
]
}
Run Code Online (Sandbox Code Playgroud)
我需要根据该对的值删除重复项,在这里我想放置区域条件us-east-1
,输出应该是
{
my_val = [
{
region = "us-east-1"
value = 1000
data = 3000
},
{
region = "us-east2"
value = 1002
data = 5000
}
]
}
Run Code Online (Sandbox Code Playgroud)
需要帮助在地图对象的值上应用不同值。
如果我理解正确的话,这是一个简单的方法,你想保持独特region
和不独特(region,value)
:
locals {
new_val = values(zipmap(local.my_val.*.region, local.my_val))
}
Run Code Online (Sandbox Code Playgroud)
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
)
)
}
Run Code Online (Sandbox Code Playgroud)
我希望这有帮助 ;)
归档时间: |
|
查看次数: |
4674 次 |
最近记录: |