2016-04-13 11 views
2

Lets sagen, dass ich eine Daten in yml Format haben:Wie filtere ich leere Liste mit jinja2 Filtern heraus?

testdata: 
    - name: others 
     marks: 
     - subject: physics 
      marks: 60 

    - name: midterm 
     marks: [] 

    - name: final 
     marks: 
     - subject: math 
      mark: 70 
     - subject: chemistry 
      mark: 80 

Was ich brauche, ist zu

  1. leere Liste ablehnen []
  2. dann eine Liste aller Marken erhalten zB

gewünschter Ausgang:

[ 
{ subject: physics 
    marks: 60 
}, 
{ subject: math 
    mark: 70 
}, 
{ subject: chemistry 
    mark: 80 
    } 
] 

bitte helfen Sie mir

Antwort

1

Sie map und sum Filter

{{ testdata|map(attribute='marks')|sum(start=[]) }} 

oder nur mit sum verwenden (für Jinja> = 2,6)

{{ testdata|sum(attribute='marks', start=[]) }} 
+0

ausgezeichnet, Dank, wenn Sie Referenz hinzufügen 'sum (start = [])', es wäre großartig – sakhunzai

+0

Es ist nur eine Summe von Listen von Marken plus Wert von 'start'. Standardmäßig ist 'start' = 0, für die Summe der Listen müssen wir es auf eine leere Liste setzen. –

+0

Eigentlich können Sie nur 'sum'-Filter verwenden, ich habe die Antwort aktualisiert –

Verwandte Themen