У меня есть два списка словарей, и я хотел бы просмотреть декартово произведение как один. Как мне это сделать.
образец данных:
environments: [
{title: outdoors, climate: variable},
{title: indoors, climate: steady}
],
colorscheme: [
{top: blue, bottom: red},
{top: pink, bottom: green}
]
желаемый результат:
item: [
{title: outdoors, climate: variable, top: blue, bottom: red},
{title: indoors, climate: steady, top: blue, bottom: red},
{title: outdoors, climate: variable, top: pink, bottom: green},
{title: indoors, climate: steady, top: pink, bottom: green}
]
Я пробовал выражение "{{ environments|product(colorscheme)|list }}"
что приближает меня, но не совсем то, что я хочу.
Результаты выражения:
item: [
[
{title: outdoors, climate: variable},
{top: blue, bottom: red}
],
[
{title: indoors, climate: steady},
{top: blue, bottom: red}
],
[
{title: outdoors, climate: variable},
{top: pink, bottom: green}
],
[
{title: indoors, climate: steady},
{top: pink, bottom: green}
]
]
Вот один из способов сделать это. Не уверен, что это лучший eway.
- hosts: localhost
gather_facts: no
vars:
envs:
- title: outdoors
climate: variable
- title: indoors
climate: steady
colorscheme:
- top: blue
bottom: red
- top: pink
bottom: green
tasks:
- debug:
msg: >
[
{% for e in envs %}
{% for c in colorscheme %}
{{ e | combine (c) }},
{% endfor %}
{% endfor %}
]
# TASK [debug] **************************************************************************************************[3/1813$
# ok: [localhost] => {
# "msg": [
# {
# "bottom": "red",
# "climate": "variable",
# "title": "outdoors",
# "top": "blue"
# },
# {
# "bottom": "green",
# "climate": "variable",
# "title": "outdoors",
# "top": "pink"
# },
# {
# "bottom": "red",
# "climate": "steady",
# "title": "indoors",
# "top": "blue"
# },
# {
# "bottom": "green",
# "climate": "steady",
# "title": "indoors",
# "top": "pink"
# }
# ]
# }
#