Achatamento e filtragem de uma estrutura complexa em ansible - dict of list of dict

Eu tenho dados que são representados desta maneira:

 {
    "key1": [{
      "name": "some name1",
      "index": "some idx1"
    },
    {
      "name": "some name2",
      "index": "some idx2"
    },
    {
      "name": "some name3",
      "index": "some idx3"
    }],
    "key2": [{
      "name": "some name4",
      "index": "some idx4"
    },
    {
      "name": "some name5",
      "index": "some idx5"
    },
    {
      "name": "some name6",
      "index": "some idx6"
    }]
}    

Eu gostaria de converter o acima para isso, que é basicamente um dicionário com a chave existente em uma lista dos índices.

{ 
      "key1": [some idx1, some idx2, some idx3],
      "key2": [some idx4, some idx5, some idx6]
}

Eu já vi alguns exemplos usando mapear, extrair e combinar, mas ainda não consegui fazê-lo funcionar. No entanto, eu era capaz de fazê-lo usando jinja, o código está abaixo. Minha pergunta é: qual é a melhor maneira de realizar o que foi dito acima. Qual é a melhor prática recomendada em relação a esse tipo de coisa - existe alguma razão pela qual operações mais complexas não devam ser feitas usando o jinja2 (dado que os liners que eu vi são excessivamente complexos e provavelmente seria difícil para outras pessoas descobrirem) fora - consequentemente dificultando a manutenção do script).

Aqui está o código que faz o truque, mas, novamente, não tenho certeza se a melhor maneira de fazer isso:

- hosts: local
  tags: test1
  gather_facts: False
  vars:
    dict1:
      key1:
        - { name: some name1, index: some idx1 }
        - { name: some name2, index: some idx2 }
        - { name: some name3, index: some idx3 }
      key2:
        - { name: some name4, index: some idx4 }
        - { name: some name5, index: some idx5 }
        - { name: some name6, index: some idx6 }
  tasks:      
  - name: "dict of list of dict"
    set_fact:
      index_map: |
        {% set map = dict() %}
        {% for k,v in dict1.iteritems() %}
          {% set x=map.__setitem__(k, []) %}
          {% for item in v %}
            {% set x= map[k].append(item.name) %}
          {% endfor %}
        {% endfor %}
        {{ map }}
  - debug: 
      msg: "{{ index_map }}"

Para expandir o problema, estou tentando resolver um pouco mais: Dado um 'índice', quero encontrar a chave à qual ele está associado. A estrutura de destino me permitiria fazer isso um pouco mais fácil, eu acho. portanto, um ditado de chave para uma lista de índice ou um ditado de índice para chave seria suficiente.

Obrigado por qualquer conselho ..