# Search value in a dictionary with multiple value

**URL:** <https://forum.ansible.com/t/search-value-in-a-dictionary-with-multiple-value/41806>\
**Category:** Get Help\
**Created:** [April 18, 2025, 8:23am UTC](https://forum.ansible.com/t/search-value-in-a-dictionary-with-multiple-value/41806 "2025-04-18T08:23:48Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![mcoussi](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/mcoussi/32/8056_2.png) [@mcoussi](https://forum.ansible.com/u/mcoussi)\
**Post date:** [April 18, 2025, 8:23am UTC](https://forum.ansible.com/t/search-value-in-a-dictionary-with-multiple-value/41806/1 "2025-04-18T08:23:48Z")

</div>

Hi All,

I’ve tried to find a Network UUID where an IP is a member of pool.

Example:

i’ve an IP with variable [search\_ip\_address].

```auto
"search_ip_address": "192.168.1.11"

```

I know that this IP is a member of Network UUID in he variable [tmp\_network\_uuid]

```auto
"tmp_network_uuid": [
  "AAAAAAAAA-BBBBB-CCCCC-DDDDDD-EEEEEE",
  "FFFFFFFFF-GGGGG-HHHHH-IIIIII-JJJJJJ"
]

```

But this ip is configured only in one pool of network.  
“AAAAAAAAA-BBBBB-CCCCC-DDDDDD-EEEEEE” or “FFFFFFFFF-GGGGG-HHHHH-IIIIII-JJJJJJ” UUID not in these network at same time.

I want to search in which network uuid the ip [search\_ip\_address] is a pool member in the variable [tmp\_network\_vlan\_ips] below :

```auto
"tmp_network_vlan_ips": [
  {
    "network_name": "NET_A01",
    "network_uuid": "XXXXXX-YYYYY-XXXXXXX-XXXXX-YYYYYYYY",
    "ips_pool": [
      "192.168.1.1",
      "192.168.1.2"
    ]
  },
  {
    "network_name": "NET_B01",
    "network_uuid": "AAAAAAAAA-BBBBB-CCCCC-DDDDDD-EEEEEE",
    "ips_pool": [
      "192.168.1.10",
      "192.168.1.11"
    ]
  },
  {
    "network_name": "NET_C01",
    "network_uuid": "FFFFFFFFF-GGGGG-HHHHH-IIIIII-JJJJJJ",
    "ips_pool": [
      "192.168.1.20",
      "192.168.1.21"
    ]
  }
]

```

In the example above, i need to find the nework\_name [NET\_B01].

Do you know how can i do that ?

Thanks for your help,  
Matt

---

<div class="post-metadata">

**Author:** ![kristianheljas](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/kristianheljas/32/7702_2.png) [@kristianheljas](https://forum.ansible.com/u/kristianheljas)\
**Post date:** [April 18, 2025, 9:12am UTC](https://forum.ansible.com/t/search-value-in-a-dictionary-with-multiple-value/41806/2 "2025-04-18T09:12:26Z")

</div>

You can use [selectattr filter](https://jinja.palletsprojects.com/en/stable/templates/#jinja-filters.selectattr) with [contains filter](https://docs.ansible.com/ansible/latest/collections/ansible/builtin/contains_test.html#ansible-collections-ansible-builtin-contains-test), like so:

```yaml
- ansible.builtin.debug:
    msg: "{{ found_network.network_name }}"
  vars:
    found_network: "{{ tmp_network_vlan_ips | selectattr('ips_pool', 'contains', search_ip_address) | first }}"

```

---

<div class="post-metadata">

**Author:** ![mcoussi](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/mcoussi/32/8056_2.png) [@mcoussi](https://forum.ansible.com/u/mcoussi)\
**Post date:** [April 18, 2025, 11:30am UTC](https://forum.ansible.com/t/search-value-in-a-dictionary-with-multiple-value/41806/3 "2025-04-18T11:30:53Z")

</div>

Hi @kristianheljas ,

Thanks for your reply.

With your solution i’m able to find the Network but i need to add a filter on variable [tmp\_network\_uuid].  
How can i add the filter on this variable which contains two values ?

Thanks for your help,  
Matt

---

<div class="post-metadata">

**Author:** ![kristianheljas](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/kristianheljas/32/7702_2.png) [@kristianheljas](https://forum.ansible.com/u/kristianheljas)\
**Post date:** [April 18, 2025, 12:55pm UTC](https://forum.ansible.com/t/search-value-in-a-dictionary-with-multiple-value/41806/4 "2025-04-18T12:55:52Z")

</div>

Use another selectattr filter with `in` test, like so:

```auto
tmp_network_vlan_ips | selectattr('network_uuid', 'in', tmp_network_uuid) | selectattr('ips_pool', 'contains', search_ip_address) | first

```

---

<div class="post-metadata">

**Author:** ![mcoussi](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/mcoussi/32/8056_2.png) [@mcoussi](https://forum.ansible.com/u/mcoussi)\
**Post date:** [April 29, 2025, 12:58pm UTC](https://forum.ansible.com/t/search-value-in-a-dictionary-with-multiple-value/41806/5 "2025-04-29T12:58:42Z")

</div>

Hi @kristianheljas,

All is Good thanks for your help,

Matt

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/ansible/original/1X/1882d9a01da5d8996a862359b0913cc568a39b84.svg) [@system](https://forum.ansible.com/u/system)\
**Post date:** [May 29, 2025, 12:59pm UTC](https://forum.ansible.com/t/search-value-in-a-dictionary-with-multiple-value/41806/6 "2025-05-29T12:59:10Z")

</div>

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.
