0Pricing
Competitive Programming Academy · Leçon

Trier selon plusieurs champs

Départager avec des clés sous forme de tuples et reverse

Trier selon plusieurs champs est une leçon Competitive Programming Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Competitive Programming Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Competitive Programming Academy comprend 4 leçons au total.

Quand une seule key ne suffit pas

Parfois, plusieurs éléments sont à égalité sur le premier champ et vous devez les départager. La solution consiste à utiliser une clé tuple qui liste les champs par ordre de priorité.

Les tuples se comparent de gauche à droite

Python compare les tuples élément par élément : il vérifie le premier élément et ne regarde le second que si le premier est à égalité.

print((1, 9) < (1, 2))   # False
print((1, 2) < (2, 0))   # True

Une clé tuple pour deux champs

Renvoyez un tuple depuis votre key pour trier selon le premier champ, puis selon le second. Cela trie les personnes par âge, puis par nom.

people.sort(key=lambda p: (p.age, p.name))

Ordre primaire et secondaire

Le champ le plus à gauche constitue le tri principal et le suivant sert à départager les égalités. Réorganisez le tuple pour changer le champ prioritaire.

data = [(2, "b"), (1, "z"), (1, "a")]
print(sorted(data))
# [(1, 'a'), (1, 'z'), (2, 'b')]

Mélangez ordre croissant et décroissant

Pour trier un champ dans l'ordre croissant et un autre dans l'ordre décroissant, prenez l'opposé du champ numérique à trier dans l'ordre décroissant à l'intérieur de la clé tuple.

items.sort(key=lambda x: (x.group, -x.score))

L'astuce de l'opposé nécessite des nombres

L'astuce du signe moins ne fonctionne qu'avec des nombres. Pour inverser un champ de type chaîne, vous devez enchaîner les tris au lieu de prendre son opposé.

Le tri stable permet d'enchaîner les tris

Comme le tri est stable, vous pouvez trier d'abord selon la clé secondaire, puis selon la clé principale, tout en conservant les égalités dans le bon ordre.

rows.sort(key=lambda r: r.name)
rows.sort(key=lambda r: r.age, reverse=True)

Enchaînement ou tuple unique

Une seule clé tuple est plus rapide et plus claire dans les cas simples. L'enchaînement de tris est préférable lorsqu'un champ doit être croissant comme une chaîne et un autre décroissant.

itemgetter pour gagner en vitesse

Pour les tuples indexés, itemgetter est une key claire et rapide. Elle extrait plusieurs champs à la fois, dans l'ordre de priorité.

from operator import itemgetter
rows.sort(key=itemgetter(1, 0))

Les critères d'égalité rendent le résultat déterministe

Ajouter un dernier critère d'égalité unique, comme un id, rend le résultat stable d'une exécution à l'autre, ce qui est apprécié par les juges dotés de vérificateurs stricts.

Préparez votre key avant de coder

Lisez le problème et notez les champs de tri dans l'ordre. Une clé tuple claire transforme une comparaison complexe en une seule ligne courte.

Vérification rapide

Vous voulez trier les étudiants par note croissante, puis par nom croissant.

Récapitulatif

Vous pouvez départager les égalités avec une clé tuple, prendre l'opposé des nombres pour un ordre décroissant et enchaîner des tris stables pour mélanger les directions. Les critères d'égalité gardent un résultat propre. ✅

Questions Fréquemment Posées

La leçon « Trier selon plusieurs champs » est-elle gratuite ?

Oui — le texte complet de « Trier selon plusieurs champs » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Competitive Programming Academy, passe à CoddyKit PRO. Le cours Competitive Programming Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Trier selon plusieurs champs » ?

Départager avec des clés sous forme de tuples et reverse Tu pratiques Competitive Programming Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Competitive Programming Academy ?

Aucune expérience préalable n'est requise. Competitive Programming Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.

Combien de temps prend la leçon « Trier selon plusieurs champs » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Competitive Programming Academy ?

Oui. Chaque leçon Competitive Programming Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. sorted() et la fonction key
  2. Trier selon plusieurs champs
  3. Ordre personnalisé avec functools.cmp_to_key
  4. Pourquoi trier d’abord débloque des solutions
← Retour à Competitive Programming Academy