Introduction
Le module intégré collections
de Python offre plusieurs structures de données puissantes qui étendent les capacités des types standard. Dans ce tutoriel, nous allons explorer certaines de ces collections avancées - telles que defaultdict, Counter, deque, et namedtuple - et démontrer comment elles peuvent simplifier votre code et améliorer les performances lors de tâches de traitement de données complexes.
defaultdict
Sous-classe
Le module defaultdict
est une sous-classe du module intégré dict
qui renvoie une valeur par défaut lorsqu’une clé est manquante. Ceci élimine le besoin de vérifier l’existence des clés.
#|label: defaultdict-example
from collections import defaultdict
# Créer un dictionnaire par défaut avec une liste comme usine par défaut.
= defaultdict(list)
dd
# Ajouter des valeurs aux clés.
"fruits"].append("apple")
dd["fruits"].append("banana")
dd["vegetables"].append("carrot")
dd[
print("defaultdict:", dict(dd))
Résultats:
defaultdict: {'fruits': ['apple', 'banana'], 'vegetables': ['carrot']}
Counter
Sous-classe
La classe Counter
est utile pour compter les objets hachables. Il est facile de compter les occurrences et d’effectuer des opérations telles que la recherche des éléments les plus communs.
#|label: counter-example
from collections import Counter
= ["apple", "banana", "apple", "orange", "banana", "apple"]
data = Counter(data)
counter
print("Counter:", counter)
print("Most common:", counter.most_common(2))
Résultats:
Counter: Counter({'apple': 3, 'banana': 2, 'orange': 1})
Most common: [('apple', 3), ('banana', 2)]
deque
Sous-classe
deque
(file d’attente double) prend en charge les ajouts et les suppressions rapides des deux côtés, ce qui le rend idéal pour la mise en œuvre de files d’attente ou de piles.
#|label: deque-example
from collections import deque
# Créer un deque et ajouter des éléments aux deux extrémités.
= deque([1, 2, 3])
d 4) # Ajouter à droite
d.append(0) # Ajouter à gauche
d.appendleft(
print("Deque:", d)
# Retirer les éléments des deux extrémités.
= d.pop()
right = d.popleft()
left
print("After popping, deque:", d)
print("Popped from right:", right, "and left:", left)
Résultats:
Deque: deque([0, 1, 2, 3, 4])
After popping, deque: deque([1, 2, 3])
Popped from right: 4 and left: 0
namedtuple
Sous-classe
namedtuple
permet de créer des types d’objets légers avec des champs nommés. Ils sont immuables et peuvent être utilisés comme des tuples ordinaires tout en améliorant la lisibilité du code.
#|label: namedtuple-example
from collections import namedtuple
# Définir un triplet nommé 'Point'.
= namedtuple("Point", ["x", "y"])
Point
# Créer une instance de Point.
= Point(x=10, y=20)
p
print("Namedtuple Point:", p)
print("X coordinate:", p.x)
print("Y coordinate:", p.y)
Résultats:
Namedtuple Point: Point(x=10, y=20)
X coordinate: 10
Y coordinate: 20
Collections supplémentaires
Bien que les exemples ci-dessus couvrent les collections avancées les plus courantes, le module collections
de Python comprend également les éléments suivants:
- OrderedDict: Bien que les dicts de Python 3.7+ conservent l’ordre d’insertion, OrderedDict peut être utile pour des opérations d’ordonnancement spécifiques.
- ChainMap: Pour gérer plusieurs dictionnaires comme un seul.
- UserDict, UserList et UserString : Pour faciliter la sous-classification des types intégrés.
Conclusion
Les structures de données avancées du module collections
peuvent simplifier de nombreuses tâches en fournissant des fonctionnalités intégrées qui vont au-delà des types de données standard. L’utilisation d’outils tels que defaultdict, Counter, deque, et namedtuple peut conduire à un code plus propre, plus efficace et plus lisible. Expérimentez ces collections pour voir comment elles peuvent améliorer votre traitement des données et votre logique d’application.
Plus d’informations
- Guide complet des structures de données Python
- Manipuler des structures de données imbriquées en Python
- Opérations avancées sur les structures de données en Python
- Comparaisons de performances et meilleures pratiques pour les structures de données Python
Bon codage et bonne maîtrise des collections avancées de Python!
Explorer d’autres articles
Voici d’autres articles de la même catégorie pour vous aider à approfondir le sujet.
Réutilisation
Citation
@online{kassambara2024,
author = {Kassambara, Alboukadel},
title = {Collections Python avancées : defaultdict, Counter, deque,
namedtuple, etc.},
date = {2024-02-09},
url = {https://www.datanovia.com/fr/learn/programming/python/additional-tutorials/collections-module.html},
langid = {fr}
}