Terraform For Loop
The syntax of a for loop changes depending on whether you are processing a map or a list.
As a reminder, a simple map comprises of a key and value as depicted below.
# variables.tf
simplemapvariable = {
    Key = "Value",
  }
A map of map comprises of key and value inside a key as depicted below.
# variables.tf
simplemapmapvariable ={
    "Key1" = {
      Key2 = "Value2"
    }
  }
To loop over this map of map structure you will need 2 for loops:
# main.tf
output "c_simplemapvariable_6" {
  value = flatten([
      for Key1, Value1 in var.vnets : [   # First for loop
        for Key2,Value2 in Value1 : {     # Second for loop
          subnet_name = Key2
          subnet = Value2
          vnet = Key1
        }
    ]
  ])
}
1. Worked Example.
Assuming you have a list of virtual networks or VPCs that contain subnets like the below
# variables.tfvars
vnets ={
    "vn-erp-app" = {
      sn-web = "10.10.10.0/24",
      sn-app = "10.10.11.0/24"
      sn-db = "10.10.12.0/24"
    },
    "vn-crm-app" = {
      sn-web = "10.10.20.0/24",
      sn-app = "10.10.21.0/24"
      sn-db = "10.10.22.0/24"
    }
  }
# variables.tf
variable "vnets"{
    type = map(map(string))
}
To iterate over this structure you will need to perform 2 loops, as depicted below.
flowchart LR
    subgraph For_Loop1[<i>For Loop 1, Iteration 1</i>]
        A[<b>vNet:</b> vn-erp-app ] -->B[<b>Network:</b> sn-web = 10.10.10.0/24,sn-app = 10.10.11.0/24, sn-db = 10.10.12.0/24]
        subgraph For_Loop2[<i>For Loop 2, Iteration 1</i>]
            C[<b>Subnet_name:</b> sn-web] --> D[<b>Subnet:</b> 10.10.10.0/24]
        end
    end
    B-->C
    style For_Loop1 fill:#FFFFFF,stroke:#333,stroke-width:1px, stroke-dasharray: 2
    style For_Loop2 fill:#FFFFFF,stroke:#333,stroke-width:1px, stroke-dasharray: 2
This is reflected in the following code:
# main.tf
output "c_simplemapvariable_5" {
  value = flatten([
      for vNet, Network in var.vnets : [
        for Subnet_name,Subnet in Network : {
          subnet_name = Subnet_name
          subnet = Subnet
          vnet = vNet
        }
    ]
  ])
}
c_simplemapvariable_5 = [
  {
    "subnet" = "10.10.21.0/24"
    "subnet_name" = "sn-app"
    "vnet" = "vn-crm-app"
  },
  {
    "subnet" = "10.10.22.0/24"
    "subnet_name" = "sn-db"
    "vnet" = "vn-crm-app"
  },
  {
    "subnet" = "10.10.20.0/24"
    "subnet_name" = "sn-web"
    "vnet" = "vn-crm-app"
  },
  {
    "subnet" = "10.10.11.0/24"
    "subnet_name" = "sn-app"
    "vnet" = "vn-erp-app"
  },
  {
    "subnet" = "10.10.12.0/24"
    "subnet_name" = "sn-db"
    "vnet" = "vn-erp-app"
  },
  {
    "subnet" = "10.10.10.0/24"
    "subnet_name" = "sn-web"
    "vnet" = "vn-erp-app"
  },
]