如何使用Terraform将含键字段的列表转为映射结构?
Terraform:将含键字段的列表转换为映射结构
你可以用zipmap函数结合列表推导式实现需求,也可以直接用更直观的for表达式构建映射,两种方法都能达到目标:
方法1:使用zipmap函数
zipmap需要两个等长列表:一个作为映射的键集合,另一个作为对应的值集合。代码如下:
mylistmap = zipmap( # 提取所有item的key作为映射的键列表 [for item in var.mylist : item.key], # 提取每个item去掉key后的属性作为值列表 [for item in var.mylist : { property1 = item.property1 property2 = item.property2 }] )
方法2:直接使用for表达式(更易读)
Terraform的映射推导式可以直接遍历列表生成映射,写法更简洁:
mylistmap = { for item in var.mylist : item.key => { property1 = item.property1 property2 = item.property2 } }
说明
两种方法的核心逻辑一致:遍历原列表中的每个对象,以对象的key字段作为映射的键,以对象中key以外的属性组成的新对象作为对应的值。第二种方法无需额外调用zipmap,代码结构更清晰,推荐使用。
内容的提问来源于stack exchange,提问作者Richard Brown
相关产品推荐
相关产品推荐

