Module de collections Python : types de conteneurs avancés
Apprenez à utiliser le module collections de Python. Master Counter, defaultdict, nametuple, deque et comment simplifier des structures de données complexes.
Aperçu
Alors que les conteneurs de base de Python (listes, dictionnaires, ensembles et tuples) suffisent pour la plupart des tâches, les programmes complexes nécessitent souvent des structures de données spécialisées. Pour résoudre ce problème, Python fournit le module « collections » intégré. Ce module contient des types de données de conteneurs hautes performances conçus pour résoudre les tâches de programmation courantes plus efficacement et avec une syntaxe plus propre et plus auto-documentée.
Parmi les classes les plus utiles se trouve « defaultdict », qui agit comme un dictionnaire normal mais initialise automatiquement les clés manquantes avec une valeur par défaut (comme une liste vide ou un zéro entier), éliminant ainsi le besoin de vérifications détaillées des clés. Un autre moteur puissant est la classe « Counter », spécifiquement optimisée pour compter les occurrences d'éléments dans un itérable. Pour les files d'attente et les piles rapides, `deque` (file d'attente à double extrémité) propose des insertions et des suppressions `O(1)` aux deux extrémités, contrairement aux listes qui souffrent de décalages `O(N)`.
Enfin, le module propose `namedtuple`, qui crée des objets légers de type tuple accessibles en utilisant la notation par points ainsi que les index traditionnels (par exemple, `point.x` au lieu de `point[0]`). Cela vous donne la vitesse et l'immuabilité d'un tuple avec la lisibilité d'une classe. L'intégration du module collections dans votre flux de travail garantit que votre code reste élégant, performant et propre.
Sortie de code et d'exécution
Compter les mots à l'aide de Counter et organiser des groupes de dictionnaires avec defaultdict.
from collections import Counter, defaultdict, namedtuple
# 1. Counter: Tallying items
votes = ["yes", "no", "yes", "yes", "no"]
vote_counts = Counter(votes)
print(f"Vote Counts: {vote_counts}")
print(f"Most common: {vote_counts.most_common(1)}")
# 2. defaultdict: Grouping values
grouped_data = defaultdict(list)
grouped_data["engineers"].append("Alice")
grouped_data["engineers"].append("Bob")
print(f"Grouped Data: {dict(grouped_data)}")
# 3. namedtuple: Clean records
Point = namedtuple("Point", ["x", "y"])
p = Point(10, 20)
print(f"Point x: {p.x}, Point y: {p.y}")Vote Counts: Counter({'yes': 3, 'no': 2})
Most common: [('yes', 3)]
Grouped Data: {'engineers': ['Alice', 'Bob']}
Point x: 10, Point y: 20Mise en œuvre étape par étape
- Analyser les fichiers journaux pour compter les occurrences d'erreurs via Counter
- Création de files d'attente prioritaires ou de planificateurs de tâches à l'aide de deque
- Représentation de dimensions de coordonnées ou d'enregistrements de données à l'aide d'un tuple nommé
Foire aux questions
Pourquoi deque est-il plus rapide que list pour les opérations de file d'attente ?
Une liste nécessite de décaler tous les éléments suivants en mémoire lors de l'insertion ou de la suppression depuis le début (O(N)). Un deque est implémenté sous la forme d'une liste doublement chaînée, permettant des opérations O(1) aux deux extrémités.
Puis-je modifier les éléments d’un tuple nommé ?
Non. Puisque les tuples nommés héritent des tuples standard, ils sont totalement immuables. Vous devez utiliser la méthode ._replace() pour renvoyer une nouvelle instance modifiée.
Sujets connexes
Apprenez tout sur les listes Python. Découvrez comment créer, découper, modifier et parcourir des tableaux en Python de manière native.
Dictionnaires PythonMaîtrisez les dictionnaires Python. Apprenez à stocker, récupérer et gérer les données des paires clé-valeur. Comprendre les performances et les meilleures pratiques pour les mappages.
Python ItertoolsApprenez le module itertools de Python. Maîtrisez les itérateurs infinis, les combinaisons, les permutations, le regroupement et le traitement des données économe en mémoire.
Ressources Python recommandées
Développez vos connaissances avec des didacticiels interactifs, des aide-mémoire et des comparaisons de codes associés.
Comment trier une liste en Python
Apprenez à trier une liste en Python à l'aide de la méthode sort() et de la fonction sorted(). Découvrez des exemples de tri de clés personnalisé et d’ordre inverse.
Aide-mémoire sur les méthodes de chaîne Python
Un guide de référence complet pour la manipulation des chaînes Python. Maîtrisez le formatage, la recherche, le fractionnement, le remplacement et la vérification des propriétés des chaînes.
Python vs JavaScript : quel langage de programmation est le meilleur ?
Une comparaison complète entre Python et JavaScript. Explorez les différences de syntaxe, les performances, les cas d'utilisation (backend et frontend) et des exemples de codage.