Python Ansible:将值从一个字典替换到另一个字典,而不添加整个字典

Python Ansible:将值从一个字典替换到另一个字典,而不添加整个字典,python,ansible,Python,Ansible,正如标题所示,如果一个dict的键在另一个dict中找到,我希望将两个dict组合在一起;使用第二个dict的值 比如说 第1条: { "test": "replace me", "test2": "some value" } 第2条: { "test": "replaced", "test3": "Don't add" } 综合结果: { "test": "replaced", "test2": "some value" } 下面是剧本 shell> cat

正如标题所示,如果一个dict的键在另一个dict中找到,我希望将两个dict组合在一起;使用第二个dict的值

比如说

第1条:

{
  "test": "replace me",
  "test2": "some value"
}
第2条:

{
  "test": "replaced",
  "test3": "Don't add"
}
综合结果:

{
  "test": "replaced",
  "test2": "some value"
}
下面是剧本

shell> cat playbook.yml
- hosts: localhost
  vars:
    dict1:
      test: "replace me"
      test2: "some value"
    dict2:
      test: "replaced"
      test3: "Don't add"
  tasks:
    - set_fact:
        dict1: "{{ dict1|combine({item: dict2[item]}) }}"
      loop: "{{ dict1.keys()|list|intersect(dict2.keys()|list) }}"
    - debug:
        var: dict1
给予


您可能想检查dict.update()是否尝试使用它,但我不确定我是否理解如何访问“事实”
--name:Deploy and update Lambda hosts:localhost#gather#u facts:no connection:localtasks:-name:command:“echo'test'”set_fact:dict1:{{list.0.env_vars}}”dict2:{{lookup('hashi_vault',vault_string)}”-名称:vault 2 set_fact:dict1:{{dict1}组合({item:dict2[item]}}})循环:{{{dict1.keys()| list}相交(dict2.keys()| list)}”-debug:msg:{{ansible_facts}
这就是我要发布的内容,但如果我尝试在多个任务中使用set fact,则会引发错误
shell> ansible-playbook playbook.yml

...

ok: [localhost] => {
    "dict1": {
        "test": "replaced", 
        "test2": "some value"
    }
}