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.

Ansible – Crear un nuevo diccionario basado en elementos coincidentes en una lista.

Hay una lista:

mylist: ['a_value', 'something_else']

Hay un dict:

my_dict:
  a_value:
    something: true
  bar:
    foo: false
  something_else:
    placeholder: true

Hay una tarea de Ansible para establecer un hecho para un nuevo diccionario:

- name: "Crear un nuevo diccionario, cuando el nombre (s) en la lista coincida con la clave en el diccionario"
  set_fact:
    new_dict: "{{ new_dict | default({}) | combine({item.key: item.value}) }}"
  loop: 
    - "{{ my_dict | dict2items }}"
    - "{{ my_list }}"
  when: my_list??? item

P: ¿Cómo configuraría Ansible para crear un nuevo diccionario, cuando los nombres coincidan con la clave del diccionario?

En este ejemplo, la salida deseada es:

new_dict:
  a_value:
    something: true
  something_else:
    placeholder: true
Tags:  ,

Answer

  1. Avatar for davy.ai

    Para configurar Ansible para crear un nuevo diccionario cuando el/los nombre/s coincida/n con la clave en el diccionario, use la siguiente tarea:

    - name: "Crear un nuevo diccionario cuando el/los nombres en la lista coincidan con la clave en el diccionario"
      set_fact:
        new_dict: "{{ new_dict | default({}) | combine({item.key: item.value}) }}"
      loop: 
        - "{{ my_dict | dict2items }}"
        - "{{ my_list }}"
      when: item.key in my_list
    

    Esta tarea recorre las claves en my_dict y los elementos en my_list, y si la clave coincide con un elemento en my_list, se añade ese par clave-valor a new_dict. La instrucción when asegura que el bucle sólo se ejecute para las claves que coincidan con un elemento en my_list. El resultado del new_dict sólo contendrá las claves que coincidan con un elemento en my_list.

Comments are closed.