You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Terraform中如何提取双层嵌套Map内指定键的内层内容

解决Terraform提取嵌套Map指定键对应值的问题

直接取值(推荐,键确定存在时)

如果已经明确secure这个键一定存在于local.zone_list_policy_rules中,完全不需要用for表达式,直接通过键索引就能拿到内层内容:

test = local.zone_list_policy_rules["secure"]

动态过滤场景(键不确定存在时)

如果是需要通过条件过滤(比如不确定secure是否存在,或者要匹配多个键),可以先用你的for表达式筛选出目标键值对,再用values()函数提取所有值,最后取第一个元素:

test = values({ for k, v in local.zone_list_policy_rules : k => v if k == "secure" })[0]

注意:如果没有匹配到任何键,这个写法会报错。如果要处理键不存在的情况,可以结合try()函数避免报错:

test = try(values({ for k, v in local.zone_list_policy_rules : k => v if k == "secure" })[0], {})

这里如果没匹配到,会返回一个空map,你可以根据需求替换成其他默认值。

为什么原表达式会带顶层键?

你之前写的for表达式本质是生成一个新的Map,所以会保留筛选后的键值对结构。而我们需要的是键对应的值本身,所以要么直接通过索引取值,要么从筛选后的Map中提取值。

内容的提问来源于stack exchange,提问作者lotusnoir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 15:25:55