基于正则表达式合并字典

问题描述

我想根据 item.name 使用正则表达式将字典合并到 device1.something.org 的结果中。

  vars:
    gig:  
      type: "1000BASE-T (1GE)"
    virtual:
      type: "Virtual"
    - name: SETTING INT TYPE 1GE
      set_fact:
        interfacetype: "{{ interfacetype | default([]) | combine(gig) }}"
      loop: "{{ansible_network_resources.interfaces}}"
      when: item.name | regex_search('(ge-)')
    - name: SETTING INT TYPE VIRTUAL
      set_fact:
        interfacetype: "{{ interfacetype | default([]) | combine(virtual) }}"
      loop: "{{ansible_network_resources.interfaces}}"
      when: item.name == "irb" or 
            item.name == "lo0" 

我从可靠的事实中得到的信息如下,使用瞻博网络 junipernetworks.junos.junos_facts

    ok: [device1.something.org] => {
"ansible_network_resources.interfaces": [
    {
        "enabled": true,"mtu": 9216,"name": "ge-0/0/0"
    },{
        "enabled": false,"name": "ge-0/0/1"
    },"name": "ge-0/0/2"
    },"name": "ge-0/0/3"
    },"name": "ge-0/0/4"
    },{
        "description": "agaga2","enabled": true,"name": "et-0/1/0"
    },"name": "et-0/1/1"
    },{
        "enabled": true,"name": "xe-0/2/0"
    },"name": "xe-0/2/1"
    },"name": "xe-0/2/2"
    },{
        "description": "blabla1","name": "xe-0/2/3"
    },"name": "irb"
    },"name": "lo0"
    }
]

我想得到这样的东西,根据 item.name 我可以创建另一个字典列表,但在这种情况下使用 item.type。

"ansible_network_resources.interfaces": [
    {
        type: "1000BASE-T (1GE)"
        "enabled": true,{
        type: "1000BASE-T (1GE)"
        "enabled": false,{
        type: "1000BASE-T (1GE)"            
        "enabled": false,{
        type: "Virtual"
        "enabled": true,"name": "lo0"
    }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...