# How to extract a value of a field within a list of dictionaries  when a key matches another value

**URL:** <https://forum.ansible.com/t/how-to-extract-a-value-of-a-field-within-a-list-of-dictionaries-when-a-key-matches-another-value/32545>\
**Category:** Ansible Project\
**Tags:** ansible-project\
**Created:** [March 26, 2020, 7:02pm UTC](https://forum.ansible.com/t/how-to-extract-a-value-of-a-field-within-a-list-of-dictionaries-when-a-key-matches-another-value/32545 "2020-03-26T19:02:47Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![vbotka](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/vbotka/32/359_2.png) [@vbotka](https://forum.ansible.com/u/vbotka)\
**Post date:** [March 26, 2020, 7:02pm UTC](https://forum.ansible.com/t/how-to-extract-a-value-of-a-field-within-a-list-of-dictionaries-when-a-key-matches-another-value/32545/1 "2020-03-26T19:02:47Z")

</div>

The playbook below

- name: test with json\_query 1/2  
&nbsp;&nbsp;hosts: localhost  
&nbsp;&nbsp;vars:  
&nbsp;&nbsp;&nbsp;&nbsp;domain\_definition:  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- name: server11  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cluster: cluster1  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;port: '8080'  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- name: server12  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cluster: cluster2  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;port: '8090'  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- name: server21  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cluster: cluster3  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;port: '9080'  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- name: server22  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cluster: cluster4  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;port: '9090'  
&nbsp;&nbsp;tasks:  
&nbsp;&nbsp;&nbsp;&nbsp;- debug:  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg: "{{ domain\_definition|  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;json\_query('[?name==`server21`].port') }}"

gives

&nbsp;&nbsp;&nbsp;&nbsp;"msg": [  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"9080"  
&nbsp;&nbsp;&nbsp;&nbsp;]

HTH,

&nbsp;&nbsp;-vlado

---

<div class="post-metadata">

**Author:** ![vbotka](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/vbotka/32/359_2.png) [@vbotka](https://forum.ansible.com/u/vbotka)\
**Post date:** [March 26, 2020, 7:10pm UTC](https://forum.ansible.com/t/how-to-extract-a-value-of-a-field-within-a-list-of-dictionaries-when-a-key-matches-another-value/32545/2 "2020-03-26T19:10:52Z")

</div>

"selectattr" below gives the same result

&nbsp;&nbsp;&nbsp;&nbsp;- debug:  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg: "{{ domain\_definition|  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;selectattr('name', 'regex', '^server21$')|  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map(attribute= 'port')|  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list }}"

HTH,

&nbsp;&nbsp;-vlado

---

<div class="post-metadata">

**Author:** ![Dick\_Visser](https://avatars.discourse-cdn.com/v4/letter/d/d9b06d/32.png) [@Dick\_Visser](https://forum.ansible.com/u/Dick_Visser)\
**Post date:** [March 26, 2020, 11:18pm UTC](https://forum.ansible.com/t/how-to-extract-a-value-of-a-field-within-a-list-of-dictionaries-when-a-key-matches-another-value/32545/3 "2020-03-26T23:18:49Z")

</div>

What Vladimir said (twice):

You are using:

debug:  
&nbsp;&nbsp;var:

while you should be doing:

debug:  
&nbsp;&nbsp;msg:

Dick
