- name: Define users dict
  set_fact:
    users:
      alice:
        name: Alice
        age: 21
      bob:
        name: Bob
        age: 22

- name: Convert users dict to list
  set_fact:
    user_list: "{{ lookup('dict', users) | sort(attribute='key') }}"

- name: Verify results
  assert:
    that:
    - user_list | length == 2
    - user_list[0].key == 'alice'
    - user_list[0].value | length == 2
    - user_list[0].value.name == 'Alice'
    - user_list[0].value.age == 21
    - user_list[1].key == 'bob'
    - user_list[1].value | length == 2
    - user_list[1].value.name == 'Bob'
    - user_list[1].value.age == 22

- name: Convert a non-dict (failure expected)
  set_fact:
    bad_fact: "{{ bbbbad }}"
  vars:
    bbbbad: "{{ lookup('dict', 1) }}"
  register: result
  ignore_errors: yes

- name: Verify conversion failed
  assert:
    that:
      - result is failed

- name: Define simple dict
  set_fact:
    simple:
      hello: World

- name: Convert using with_dict to cause terms to not be a list
  set_fact:
    hello: "{{ item }}"
  with_dict: "{{ simple }}"

- name: Verify conversion
  assert:
    that:
      - hello | length == 2
      - hello.key == 'hello'
      - hello.value == 'World'