es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo manipular una lista de diccionarios en Ansible?

Hay una lista de diccionarios como se muestra a continuación:

"test_list_of_dicts": [
{
  "inner_dict":[
    {"f1":"a","f2":"b"},
    {"f1":"c","f2":"d"}
  ],
  "id":"id1"
},
{
  "inner_dict":[
    {"f1":"e","f2":"f"},
    {"f1":"g","f2":"h"}
  ],
  "id":"id2"
}
]

Necesito modificar la estructura anterior y obtener una nueva lista de diccionarios como se muestra a continuación:

"new_list_of_dicts": [
    {"f1":"a","f2":"b","id":"id1"},
    {"f1":"c","f2":"d","id":"id1"},
    {"f1":"e","f2":"f","id":"id2"},
    {"f1":"g","f2":"h","id":"id2"}
]

No encontré una manera de hacer esto en Ansible.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para lograr la modificación requerida en Ansible, podemos utilizar el módulo set_fact junto con algunos filtros.

    En el siguiente playbook, primero definimos la lista de entrada test_list_of_dicts que contiene dos diccionarios, cada uno con una clave inner_dict que representa la lista de diccionarios y una clave id.

    A continuación, utilizamos el filtro json_query junto con los operadores [] y * para aplanar la lista anidada de diccionarios en una única lista new_list_of_dicts.

    Finalmente, utilizamos los filtros subelements, extract, map, combine y unique junto con un bucle para agregar la clave id a cada diccionario en new_list_of_dicts, utilizando el valor id del diccionario correspondiente en test_list_of_dicts.

    La variable resultante new_list_of_dicts contiene la lista de diccionarios modificada requerida.

Comments are closed.