I have the following YAML structure:
bri:
cards:
- slot: "1"
subslot: "0"
ports: 2
- slot: "1"
subslot: "1"
ports: 2
- slot: "1"
subslot: "2"
ports: 2
- slot: "2"
subslot: "0"
ports: 2
- slot: "2"
subslot: "1"
ports: 2
I am attempting to use Jinja2 to get a unique list of slots, i.e.:
['1', '2']
So far, I've managed to apply the following:
{{ bri.cards|map(attribute='slot')|list }}
Which gives me:
['1', '1', '1', '2', '2']
However, I don't seem to be able to find a way to get a unique list.
Ansible appears to have a "unique" filter that can do this. But I'm not using Ansible in this case.
Can anyone suggest the best way to achieve this? Should (or can) this be done natively with Jinja2, or should I adopt an alternative approach?
2.10
A unique
filter was added in version 2.10
(released 2017-11-08). You can check the change log and the PR.
from jinja2 import Template
template = Template("""
{% for x in a|unique %}
<li>{{ x }}</li>
{% endfor %}
""")
r = template.render(a=[1, 2, 3, 4, 1, 5, 4])
print(r)
Output:
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With