Trier dict dans jinja2 boucle
Je suis encore à apprendre jinja2 et flacon et je vais avoir de la difficulté à utiliser dictsort dans jinja2.
Donc je suis de passage ce dict dans un jinja2 modèle:
{'PEDD United': {'id': 37828, 'rank': 12, 'totalpts': 307},'Fc Mbonabushia': {'id': 205633, 'rank': 6, 'totalpts': 356},'FC Slurp': {'id': 933573, 'rank': 11, 'totalpts': 312},'KFC_Overijse': {'id': 38861, 'rank': 5, 'totalpts': 362},'Fc Paris': {'id': 1538051, 'rank': 2, 'totalpts': 396}}
Ce que je veux, c'est créer une table est triée en fonction de la valeur de la clé 'totalpts'. J'ai essayé toute sorte de choses et il n'a tout simplement pas prendre totalpts en compte lors de la "tri".
Voici un de mes code:
<table class="table table-bordered">
{% for team in league %}
<tr>
<td>{{team}}</td>
{% for data in league[team]|dictsort(league[team]['totalpts']) %}
<td>{{ league[team]['totalpts'] }}</td>
{% endfor %}
</tr>
{% endfor %}
</table>
par elle ne trie pas rien dans ce cas... il suffit d'imprimer la valeur dans la table sans n'importe quel ordre...
Quelqu'un peut m'aider?
grâce
source d'informationauteur Syl
Vous devez vous connecter pour publier un commentaire.
La façon dont vous êtes en train de faire cela ne fonctionnera pas, parce que dès que vous utilisez
{% for team in league %}
vous êtes déjà à l'aide de la non triés dict et l'extraction de la clé,valeur paire.Je pense que
|dictsort
peut ne pas être en mesure de vous aider, dans ce cas, parce que vous ne pouvez pas effectuer le tri par clé ou une valeur, mais par la valeur (sous-dict) valeur de 'totalpts'.Au lieu de cela, vous devez trier ce dictionnaire avant en le passant à la le modèle, de la manière suivante:
Pour trier le dict, de nous convertir en une liste de tuples (clé ,valeur) à l'aide de
.items()
. En supposant que x est un tel n-uplet, x[1] contient le dictionnaire avec le 'totalpts la touche.Alors maintenant, nous trions les tuples à l'aide de
x[1]['totalpts']
à l'aide dereverse=True
pour un ordre décroissant.Un dict lui-même ne peut pas être trié, c'est un non-ordonnée de type de données, Vous pouvez soit utiliser un
OrderedDict
ou vous pouvez tout simplement utiliser les tuples:Vous pouvez trier une liste ordonnée à l'aide de
triés
: