# List of dicts =\> dict of lists

**URL:** <https://forum.ansible.com/t/list-of-dicts-dict-of-lists/31710>\
**Category:** Ansible Project\
**Created:** [November 22, 2019, 5:43pm UTC](https://forum.ansible.com/t/list-of-dicts-dict-of-lists/31710 "2019-11-22T17:43:31Z")\
**Posts on this page:** 4\
**Page:** 1

<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:** [November 22, 2019, 5:43pm UTC](https://forum.ansible.com/t/list-of-dicts-dict-of-lists/31710/1 "2019-11-22T17:43:31Z")

</div>

Hi

I'm struggling with something seemingly simple.  
I have this list:

instances:  
&nbsp;&nbsp;- id: i-0fe48c061f6a323a0  
&nbsp;&nbsp;&nbsp;&nbsp;type: web  
&nbsp;&nbsp;- id: i-0403e39813defda31  
&nbsp;&nbsp;&nbsp;&nbsp;type: web  
&nbsp;&nbsp;- id: i-0442f13b528e5e1c6  
&nbsp;&nbsp;&nbsp;&nbsp;type: proxy  
&nbsp;&nbsp;- id: i-0ebea75d008becaa6  
&nbsp;&nbsp;&nbsp;&nbsp;type: proxy  
&nbsp;&nbsp;- id: i-067c5d985c194e036  
&nbsp;&nbsp;&nbsp;&nbsp;type: db  
&nbsp;&nbsp;- id: i-0679e87f06d0cf9a2  
&nbsp;&nbsp;&nbsp;&nbsp;type: db

Which I'd like to turn into this structure:

instances:  
&nbsp;&nbsp;web:  
&nbsp;&nbsp;&nbsp;&nbsp;- id: i-0fe48c061f6a323a0  
&nbsp;&nbsp;&nbsp;&nbsp;- id: i-0403e39813defda31  
&nbsp;&nbsp;proxy:  
&nbsp;&nbsp;&nbsp;&nbsp;- id: i-0442f13b528e5e1c6  
&nbsp;&nbsp;&nbsp;&nbsp;- id: i-0ebea75d008becaa6  
&nbsp;&nbsp;db:  
&nbsp;&nbsp;&nbsp;&nbsp;- id: i-067c5d985c194e036  
&nbsp;&nbsp;&nbsp;&nbsp;- id: i-0679e87f06d0cf9a2

But I can't figure out how to do this...

---

<div class="post-metadata">

**Author:** ![Kai\_Stian\_Olstad](https://avatars.discourse-cdn.com/v4/letter/k/e19adc/32.png) [@Kai\_Stian\_Olstad](https://forum.ansible.com/u/Kai_Stian_Olstad)\
**Post date:** [November 22, 2019, 6:15pm UTC](https://forum.ansible.com/t/list-of-dicts-dict-of-lists/31710/2 "2019-11-22T18:15:55Z")

</div>

Are you sure you need the id in the list as it's redundant and without it is very simple with selectattr and map.

---

<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:** [November 22, 2019, 7:12pm UTC](https://forum.ansible.com/t/list-of-dicts-dict-of-lists/31710/3 "2019-11-22T19:12:19Z")

</div>

The task below does the job

&nbsp;&nbsp;&nbsp;&nbsp;- set\_fact:  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;instances2: "{{ instances2|  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;default({})|  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;combine({item.0: item.1|  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;json\_query('.{id: id}')}) }}"  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;loop: "{{ instances|groupby('type') }}"

Cheers,

&nbsp;&nbsp;-vlado

---

<div class="post-metadata">

**Author:** ![Srinivasa\_Jasti](https://avatars.discourse-cdn.com/v4/letter/s/e68b1a/32.png) [@Srinivasa\_Jasti](https://forum.ansible.com/u/Srinivasa_Jasti)\
**Post date:** [November 22, 2019, 11:09pm UTC](https://forum.ansible.com/t/list-of-dicts-dict-of-lists/31710/4 "2019-11-22T23:09:59Z")

</div>

Here is another way. Although I like vladimir Botka’s solution.
