# List comparison and retireval of items on match

**URL:** <https://forum.ansible.com/t/list-comparison-and-retireval-of-items-on-match/34427>\
**Category:** Ansible Project\
**Created:** [January 12, 2021, 10:35am UTC](https://forum.ansible.com/t/list-comparison-and-retireval-of-items-on-match/34427 "2021-01-12T10:35:42Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Akshay\_Kumar](https://avatars.discourse-cdn.com/v4/letter/a/54ee81/32.png) [@Akshay\_Kumar](https://forum.ansible.com/u/Akshay_Kumar)\
**Post date:** [January 12, 2021, 10:35am UTC](https://forum.ansible.com/t/list-comparison-and-retireval-of-items-on-match/34427/1 "2021-01-12T10:35:42Z")

</div>

Hi All,

Good day to all.

I am currently working on a scenario where i need to compare two lists and print out the items which match on both lists .

List1 : [‘dba’,‘admin’,‘developer’]  
List2 : [’ user1: dba admin’ , ‘user2 : dba developer’, ‘user3 : operator’]

So as per my scenario in comparing above two list sets , the output should be  
user1  
user2  
as both users have dba/admin/developer item in there strings of list 1.

i tried below code but it doesnt seem to give me the output i need:

- name: checking  
debug:  
msg: “item”  
with\_nested:
- “{{ VlclNewList }}”
- “{{ VlclOldList }}”  
when: “(item[1] | difference(item[0]))”

Any help is highly appreciated.  
Thanks.

---

<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:** [January 12, 2021, 11:40am UTC](https://forum.ansible.com/t/list-comparison-and-retireval-of-items-on-match/34427/2 "2021-01-12T11:40:28Z")

</div>

Try

&nbsp;&nbsp;&nbsp;&nbsp;- set\_fact:  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List3: "{{ List2|  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;select('search', my\_regex1)|  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map('regex\_replace', my\_regex2, my\_replace)|  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map('trim')|  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list }}"  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vars:  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my\_regex1: '{{ List1|join("|") }}'  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my\_regex2: '^(.\*):(.\*)$'  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my\_replace: '\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:** [January 12, 2021, 6:12pm UTC](https://forum.ansible.com/t/list-comparison-and-retireval-of-items-on-match/34427/3 "2021-01-12T18:12:35Z")

</div>

Try

&nbsp;&nbsp;&nbsp;&nbsp;- set\_fact:  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List3: "{{ List3|default() + [key|trim] }}"  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;loop: "{{ List2 }}"  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vars:  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;key: "{{ item.split(':').0 }}"  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;val: "{{ item.split(':').1.split() }}"  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;when: val|intersect(List1)
