¿Es posible convertir la lista de primitivos en una lista de dictados usando Jinja2 usando comprensiones de lista/mapa?
Dada esta estructura:
list: - some_val - some_val_2 Aplicar map en cada elemento para obtener:
list: - statically_added: some_val - statically_added: some_val_2 Es posible al revés: list_from_example|map(attribute="statically_added")|list
Se me ocurrió la misma pregunta y encontré esta solución:
- debug: msg: "{{ mylist | json_query('[].{\"statically_added\": @}') }}" vars: mylist: - some_val - some_val_2Producción:
ok: [localhost] => { "msg": [ { "statically_added": "some_val" }, { "statically_added": "some_val_2" } ] }En realidad es bastante simple. Al menos, esto funciona en Ansible:
vars: my_list: - some_val - some_val_2 dict_keys: - key_1 - key_2 tasks: - debug: msg: "{{ dict(dict_keys | zip(my_list)) }}"Producción:
TASK [debug] ******************************* ok: [localhost] => { "msg": { "key_1": "some_val", "key_2": "some_val_2" }}
Tenga en cuenta que debe proporcionar una lista de claves y que deben ser distintas (la naturaleza del diccionario implica que las claves no pueden ser iguales).
ACTUALIZAR. Acabo de darme cuenta de que el título era un poco engañoso y respondí el título, no la pregunta real. Sin embargo, lo dejaré como está, porque creo que muchas personas buscarán en Google para convertir una lista en un diccionario y encontrarán esta publicación.