namedtuple et OrderedDict
Découvrir d’autres collections pratiques
namedtuple et OrderedDict est une leçon Python Academy gratuite sur CoddyKit. Ceci est la leçon 4 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 Python Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Python Academy comprend 4 leçons au total.
Deux autres collections pratiques
Le module collections contient namedtuple pour créer des tuples lisibles semblables à des enregistrements, ainsi que OrderedDict pour créer des dictionnaires dotés de méthodes supplémentaires de gestion de l’ordre.
Importez-les avec from collections import namedtuple, OrderedDict.
from collections import namedtuple, OrderedDict
print(namedtuple)
print(OrderedDict)Définir une tuple nommée
namedtuple(name, fields) crée une nouvelle sous-classe de tuples. Vous lui transmettez le nom du type et une liste de noms de champs. Le résultat est une classe que vous pouvez instancier.
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(3, 4)
print(p)Accéder aux champs par leur nom
Le principal avantage est de lire les champs par leur nom plutôt qu’à l’aide de numéros d’index cryptiques, ce qui rend le code bien plus lisible.
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(3, 4)
print(p.x)
print(p.y)Toujours une tuple
Une tuple nommée est une véritable tuple : l’indexation, le déballage et l’itération continuent donc tous de fonctionner.
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(3, 4)
print(p[0])
x, y = p
print(x + y)Immuable mais remplaçable
Comme toutes les tuples, les tuples nommées sont immuables. Pour obtenir une copie modifiée, utilisez ._replace(), qui renvoie une nouvelle instance.
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(3, 4)
q = p._replace(y=10)
print(p)
print(q)Convertir en dictionnaire
._asdict() transforme une tuple nommée en dictionnaire ordinaire associant les noms de champs aux valeurs.
from collections import namedtuple
Car = namedtuple('Car', ['make', 'year'])
c = Car('Toyota', 2026)
print(c._asdict())Valeurs par défaut
Fournissez des valeurs par défaut lors de la définition d’une tuple nommée. Elles s’appliquent aux champs les plus à droite ; vous pouvez donc les omettre lors de la création des instances.
from collections import namedtuple
User = namedtuple('User', ['name', 'role'], defaults=['guest'])
print(User('Alice'))
print(User('Bob', 'admin'))Inspecter les champs
L’attribut ._fields répertorie les noms de champs, ce qui est utile pour l’introspection ou la création de code générique.
from collections import namedtuple
Color = namedtuple('Color', ['r', 'g', 'b'])
print(Color._fields)Principes d’OrderedDict
OrderedDict mémorise l’ordre d’insertion. Depuis Python 3.7, les dictionnaires ordinaires conservent eux aussi cet ordre, mais OrderedDict ajoute des méthodes de gestion de l’ordre que vous ne pouvez pas obtenir autrement.
from collections import OrderedDict
od = OrderedDict()
od['first'] = 1
od['second'] = 2
print(od)move_to_end
.move_to_end(key) déplace une clé à la fin, ou au début avec last=False. Cette fonctionnalité est propre à OrderedDict et pratique pour une logique de type LRU.
from collections import OrderedDict
od = OrderedDict(a=1, b=2, c=3)
od.move_to_end('a')
print(list(od.keys()))
od.move_to_end('c', last=False)
print(list(od.keys()))Égalité sensible à l’ordre
Deux objets OrderedDict sont égaux uniquement si leurs éléments sont dans le même ordre. Les dictionnaires ordinaires ignorent l’ordre lors des comparaisons.
from collections import OrderedDict
a = OrderedDict([('x', 1), ('y', 2)])
b = OrderedDict([('y', 2), ('x', 1)])
print(a == b)
print(dict(a) == dict(b))Vérification rapide
Comment créer une copie modifiée d’une tuple nommée, puisqu’elle est immuable ?
Récapitulatif : tuple nommée et OrderedDict
Résumé :
namedtuple(name, fields)crée des enregistrements lisibles et immuables avec un accès par nom ;- utilisez
._replace()pour créer des copies modifiées et._asdict()pour convertir en dictionnaire ; OrderedDictconserve l’ordre d’insertion et ajoute.move_to_end();- l’égalité d’OrderedDict dépend de l’ordre, contrairement à celle d’un dictionnaire ordinaire.
from collections import namedtuple
Pt = namedtuple('Pt', ['x', 'y'])
print(Pt(1, 2)._asdict())Questions Fréquemment Posées
La leçon « namedtuple et OrderedDict » est-elle gratuite ?
Oui — le texte complet de « namedtuple et OrderedDict » 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 Python Academy, passe à CoddyKit PRO. Le cours Python Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « namedtuple et OrderedDict » ?
Découvrir d’autres collections pratiques Tu pratiques Python 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 Python Academy ?
Aucune expérience préalable n'est requise. Python 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 4 sur 4.
Combien de temps prend la leçon « namedtuple et OrderedDict » ?
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 Python Academy ?
Oui. Chaque leçon Python 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
- Counter
- defaultdict
- deque
- namedtuple et OrderedDict