es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Coma separando una lista de elementos de diccionario usando la plantilla jinja.

Tengo una lista de diccionarios que necesita estar separada por comas, excepto por el último elemento. Por ejemplo, la lista de diccionarios debe ser algo así:

education_details: [{degree: “B.S.”, type: “Full-type”, location:”aus”,grade:”A”}, {degree: “MCA”, type: “Full-type”, location:”aus”,grade:”B”}]

Estaba representando los detalles anteriores (education_details) en mi plantilla jinja de la siguiente manera:

{% for data in profile.get(‘education_details’, []) %}
{% if data.get(‘degree’, ”) %}
{% if not loop.last %}
{{data.get(‘degree’, ”)}},
{% else %}
{{data.get(‘degree’, ”)}}
{% endif %}
{% endif %}

{% if data.get(‘type’, ”) %}
{% if not loop.last %}
{{data.get(‘type’, ”)}},
{% else %}
{{data.get(‘type’, ”)}}
{% endif %}
{% endif %}

{% if data.get(‘location’, ”) %}
{% if not loop.last %}
{{data.get(‘location’, ”)}},
{% else %}
{{data.get(‘location’, ”)}}
{% endif %}
{% endif %}
{% endfor %}

Intenté usar “last”, pero no funciona.

Resultado esperado:

Las comas deben aparecer después de cada campo excepto por el último elemento ingresado:

grado
grado, tipo, ubicación
grado, ubicación

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Puede utilizar la variable loop.last para comprobar si el elemento actual es el último de la iteración. Esta variable se establece en Verdadero cuando la iteración está en el último elemento.

    Puede utilizar esta variable para comprobar si el elemento actual es el último de la iteración y añadir una coma después de cada campo, excepto en el último elemento.

    Por ejemplo:

    {% for data in profile.get('education_details', []) %}
      {% if data.get('degree', '') %}
        <span>{{data.get('degree', '')}}</span>
      {% endif %}
    
      {% if data.get('type', '') %}
        {% if not loop.last %}
           <span>{{data.get('type', '')}},</span>
        {% else %}
           <span>{{data.get('type', '')}}</span>
        {% endif %}
      {% endif %}
    
      {% if data.get('location', '') %}
        {% if not loop.last %}
           <span>{{data.get('location', '')}},</span>
        {% else %}
           <span>{{data.get('location', '')}}</span>
        {% endif %}
      {% endif %}
    {% endfor %}
    

    Esto generará la lista de diccionarios como:

    • grado
    • grado, tipo, ubicación
    • grado, ubicación

Comments are closed.