Creando diccionarios separados con una lista de valores en ellos.
Tengo un diccionario como este:
d = {
‘hosts’: [
{‘hostname’: ‘abc’, ‘ip’: ‘127.0.0.1’, ‘extra_check_cmd’: ‘check-me’},
{‘hostname’: ‘def’, ‘ip’: ‘127.0.0.2’, ‘extra_check_cmd’: ‘check-it, check-this’},
{‘hostname’: ‘ijk, uvw, xyz’, ‘ip’: ‘127.0.0.3, 127.0.0.4, 127.0.0.5’, ‘extra’: ‘check-me, check-this, check-it’}
]
}
Quiero crear el siguiente diccionario a partir de él:
d = {
‘hosts’: [
{‘hostname’: ‘abc’, ‘ip’: ‘127.0.0.1’, ‘extra_check_cmd’: ‘check-me’},
{‘hostname’: ‘def’, ‘ip’: ‘127.0.0.2’, ‘extra_check_cmd’: ‘check-it’},
{‘hostname’: ‘def’, ‘ip’: ‘127.0.0.2’, ‘extra_check_cmd’: ‘check-this’},
{‘hostname’: ‘ijk’, ‘ip’: ‘127.0.0.3’, ‘extra’: ‘check-me’},
{‘hostname’: ‘uvw’, ‘ip’: ‘127.0.0.4’, ‘extra’: ‘check-me’},
{‘hostname’: ‘xyz’, ‘ip’: ‘127.0.0.5’, ‘extra’: ‘check-me’},
{‘hostname’: ‘ijk’, ‘ip’: ‘127.0.0.3’, ‘extra’: ‘check-it’},
{‘hostname’: ‘uvw’, ‘ip’: ‘127.0.0.4’, ‘extra’: ‘check-it’},
{‘hostname’: ‘xyz’, ‘ip’: ‘127.0.0.5’, ‘extra’: ‘check-it’},
{‘hostname’: ‘ijk’, ‘ip’: ‘127.0.0.3’, ‘extra’: ‘check-this’},
{‘hostname’: ‘uvw’, ‘ip’: ‘127.0.0.4’, ‘extra’: ‘check-this’},
{‘hostname’: ‘xyz’, ‘ip’: ‘127.0.0.5’, ‘extra’: ‘check-this’}
]
}
Eso significa que cada lista de valores debe tener sus propios subdiccionarios donde se les den listas de valores separadas.
davy.ai
Para crear el diccionario de salida deseado, puedes utilizar un bucle anidado a través de cada sub-diccionario en la lista “hosts”, y dividir los valores separados por comas de “hostname” e “ip” en listas separadas. Luego, itera a través de estas listas y crea un nuevo sub-diccionario para cada combinación de hostname e ip con el valor correspondiente de “extra_check_cmd”.
Aquí tienes un ejemplo de implementación:
Esto generará el diccionario de salida deseado: