我有一个类似于以下内容的字典列表:
"subnets": [
{
"name": "subnet1-name34554",
"address": "192.168.1.100"
"id: "id1"
},
{
"name": "subnet2-name67678",
"addr": "192.168.1.200"
"id": "id2"
},
{
"name": "subnet3-name23345",
"addr": "192.168.1.300"
"id": "id3"
}
]
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用部分名称搜索字典并返回全名。例如搜索subnet1应该返回subnet1-name34554
如果我做这样的事情:
- name: test
debug: msg="{{ subnets | selectattr("name", "search", "subnet1") | list }}"
Run Code Online (Sandbox Code Playgroud)
我得到一个带有单个 dict 的列表:
[
{
"name": "subnet1-name34554",
"address": "192.168.1.100"
"id: "id1"
}
]
Run Code Online (Sandbox Code Playgroud)
我不确定只提取“名称”键的下一步是什么,或者是否有更好的方法?
结果,您将获得字典列表(单个字典)。
因此,将其输入first过滤器以仅获取第一个元素,然后获取地址name属性。
- name: test
debug:
msg: "{{ (subnets | selectattr('name', 'search', 'subnet1') | list | first).name }}"
Run Code Online (Sandbox Code Playgroud)