Python | Nested Dictionaries o "Diccionarios dentro de Diccionarios"

Asumiendo que tenemos una variable en Python que almacena datos del tipo diccionario como el siguiente ejemplo

router_output =  {
  "Cisco-IOS-XE-native:interface": {
    "GigabitEthernet": [
      {
        "name": "1",
        "description": "G1-TEST",
        "ip": {
          "address": {
            "dhcp": {}
          }
        },
        "Cisco-IOS-XE-ethernet:negotiation": {
          "auto": true
        }
      },
      {
        "name": "2",
        "description": "PORT-GI2",
        "ip": {
          "address": {
            "primary": {
              "address": "10.10.10.1",
              "mask": "255.255.255.0"
            }
          }
        },
        "Cisco-IOS-XE-ethernet:negotiation": {
          "auto": true
        }
      },
      {
        "name": "3",
        "Cisco-IOS-XE-ethernet:negotiation": {
          "auto": true
        }
      },
      {
        "name": "4",
        "Cisco-IOS-XE-ethernet:negotiation": {
          "auto": true
        }
      }
    ]
  }
}

Digamos que por ejemplo nos gustaría imprimir el valor "description" del puerto "GigabiEthernet 1" en router_output. Sin embargo, el problema es que este diccionario contiene "subdiccionarios" o "nested dictionaries" por lo tanto si quisieramos imprimir un sub-valor específico como "description" tendremos que realizar lo siguiente:

router_output_description = router_output["Cisco-IOS-XE-native:interface"]["GigabitEthernet"][0]["description"]

print ("La description del puerto GigabiEthernet 1' es:   " + router_output_description)

 >>>  La description del puerto GigabiEthernet 1' es:  G1-TEST)

 


Comentarios

Entradas populares de este blog

EVE-NG: Instalación de EVE-NG

Fortigate: Capturar paquetes (Packet capture/sniffer)

Cisco Security | Bloquear MAC address en un switch