Jinja2 迭代字典列表

Jinja2 iterating over list of dictionaries

我有一个词典列表:

services:
  some_service:
    service_name: service1
    users:
      - user1
      - user2
  another_service:
    service_name: service2
    users:
      - user3
      - user4
  and_another_one:
    service_name: service3
    users:
      - user5
      - user6

Python 语法:

services = [{'service_name': 'service1', 'users': ["user1", "user2"]}, {'service_name': 'service2', 'users': ["user3", "user4"]}, {'service_name': 'service3', 'users': ["user5", "user6"]}]

我想实现的是:

user1: service1, service2, service3
user2: service1, service2, service3
user3: service1, service2, service3
user4: service1, service2, service3
user5: service1, service2, service3
user6: service1, service2, service3

我很难完成这项工作,因此我们将不胜感激。我已经尝试了一些在这里找到的解决方案,但没有成功。提前致谢!

下面的任务

    - set_fact:
        my_dict: "{{ dict(my_users|product([my_srvcs])) }}"
      vars:
        my_users: "{{ services|json_query('*.users')|flatten|unique|sort }}"
        my_srvcs: "{{ services|json_query('*.service_name')|unique|sort }}"
    - debug:
        var: my_dict

给予

  my_dict:
    user1:
    - service1
    - service2
    - service3
    user2:
    - service1
    - service2
    - service3
    user3:
    - service1
    - service2
    - service3
    user4:
    - service1
    - service2
    - service3
    user5:
    - service1
    - service2
    - service3
    user6:
    - service1
    - service2
    - service3