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
. 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>
Collected from the Internet
Please contact [email protected] to delete if infringement.
Comments