recherche
Maisondéveloppement back-endTutoriel PythonProgrammation Python : explication détaillée des sous-classes et applications du dictionnaire intégré (dict) (le tout au même endroit)

Avant-propos

Cet article présente principalement les scénarios d'application et les exemples d'utilisation de plusieurs sous-classes d'extension intégrées de la classe dictionnaire (dict) dans le module de collection Python. Il est également combiné avec le code, afin que vous puissiez maîtriser directement ces sous-classes. liés à dict de manière "courte et rapide" Classes - OrderedDict, defaultdict, userDict.

OrderedDict

Le dictionnaire ordonné (OrderedDict) dans le module de collections Python ressemble à un dictionnaire normal, mais possède quelques fonctionnalités supplémentaires liées aux opérations de tri. OrderedDict se souvient de l'ordre dans lequel les clés ont été insérées. Ils deviennent moins importants maintenant car la classe dict intégrée a acquis la capacité de se souvenir de l'ordre d'insertion (ce nouveau comportement était garanti dans Python 3.7, donc OrderedDict semble moins important maintenant). Format général pour créer un dictionnaire ordonné :

import collections
ordDict = collections.OrderedDict([items]):

ou

from collections import OrderedDict
ordDict = OrderedDict([items]):

Cela crée et renvoie une instance de l'objet OrderedDict de la sous-classe dict, qui possède des méthodes spécifiquement pour réorganiser l'ordre du dictionnaire. Cet article présente brièvement ces méthodes.

1) popitem(last=True) :

La méthode popitem() du dictionnaire ordonné renvoie et supprime une paire (clé, valeur). Si last est True, la paire clé-valeur correspondante est renvoyée en mode LIFO (dernier entré, premier sorti) ; sinon, elle est renvoyée dans l'ordre FIFO (premier entré, premier sorti).

2) move_to_end(key, last=True) :

Déplacez les clés existantes à l'une ou l'autre extrémité du dictionnaire ordonné. Si last est True (valeur par défaut), l'élément est déplacé vers la droite ; si last est False, il est déplacé au début. Une KeyError sera levée si la clé n’existe pas.

Veuillez consulter le code :

Programmation Python : explication détaillée des sous-classes et applications du dictionnaire intégré (dict) (le tout au même endroit)

Supposons que nous supprimions et réinsérons la même clé dans OrderedDict. Il mettra cette clé à la fin pour conserver l’ordre d’insertion des clés. Un exemple est le suivant :

Programmation Python : explication détaillée des sous-classes et applications du dictionnaire intégré (dict) (le tout au même endroit)

Le résultat d'exécution est le suivant :

删除前的OrderedDict:
x X
y Y
z Z
插入后的OrderedDict:
y Y
z Z
x X

UserDict

La classe UserDict est utilisée comme wrapper pour les objets dictionnaire (dict) intégrés de Python. Le besoin de cette classe a été partiellement remplacé par la possibilité de sous-classer directement à partir de dict. Cependant, cette classe est plus facile à utiliser car le dictionnaire sous-jacent est accessible en tant qu'attribut. Utilisez UserDict lorsque vous souhaitez créer votre propre dictionnaire avec des fonctionnalités modifiées ou nouvelles. Son format d'utilisation est le suivant :

import collections
userDict = collections.UserDict([initialdata])

ou

import collections
userDict = collections.UserDict([initialdata])

Ce type de dictionnaire simulé a le contenu de son instance stocké dans un dictionnaire normal, accessible via l'attribut data de l'instance UserDict. Si initialdata est fourni, le contenu des données est initialisé avec cela ; notez que l'instance elle-même ne conserve pas de référence distincte (non exclusive) à initialdata, ce qui lui permet d'être utilisée à d'autres fins.

En plus de prendre en charge les méthodes et opérations mappées, les instances UserDict fournissent les attributs suivants :

1) data

Un véritable dictionnaire utilisé pour stocker le contenu de la classe UserDict. Un exemple est le suivant :

Programmation Python : explication détaillée des sous-classes et applications du dictionnaire intégré (dict) (le tout au même endroit)

Le résultat est le suivant :

{'name': 'Kevin Cui', 'age': 24}

Supposons que nous souhaitions définir un objet dictionnaire personnalisé qui prend en charge les opérations d'addition (fusion de deux dictionnaires). Lorsque nous ajoutons deux instances d'un dictionnaire personnalisé, nous nous attendons à obtenir un nouveau dictionnaire contenant tous les éléments des deux dictionnaires. Gardez à l’esprit que si vous essayez d’ajouter un dictionnaire standard en Python, vous obtiendrez une TypeError. Laissez-nous l'implémenter à l'aide de UserDict :

Programmation Python : explication détaillée des sous-classes et applications du dictionnaire intégré (dict) (le tout au même endroit)

Le résultat en cours d'exécution est le suivant :

{'x': 10, 'y': 20}

Bien sûr, vous pouvez également implémenter vous-même d'autres opérations personnalisées associées.

DefaultDict

Un problème courant avec la classe Dictionary en Python est le manque de clés. Lorsque vous essayez d'accéder à une clé qui n'existe pas dans le dictionnaire, vous obtiendrez une exception KeyError. Ainsi, chaque fois que vous avez besoin d’accéder à un élément d’un dictionnaire, vous devez gérer cette situation. Heureusement, Python fournit la classe DefaultDict. Il est utilisé pour fournir une valeur par défaut pour les clés inexistantes sans déclencher KeyError.

DefaultDict est une sous-classe de la classe dict intégrée. Il remplace une méthode et ajoute une variable d'instance inscriptible. Le reste des fonctionnalités est le même que celui de dict. Le format d'utilisation est le suivant :

import colloections
defaultDict = collections.defaultdict(default_factory=None, /[,…])

Le code ci-dessus renvoie un nouvel objet de type dictionnaire, DefaultDict, qui est une sous-classe de la classe dict intégrée.

Le premier paramètre fournit la valeur initiale de l'attribut default_factory, qui est par défaut Aucun. Tous les arguments restants sont traités comme s'ils étaient passés au constructeur dict, y compris les arguments de mots clés. Ce qu'il faut comprendre, c'est que si ce paramètre est fourni, il doit être appelable.

En plus de prendre en charge les opérations dict standard, l'objet DefaultDict prend également en charge les attributs de méthode suivants :

1) __missing__(key) :

Si l'attribut default_factory est None, l'utilisation de la clé comme paramètre déclenchera une exception KeyError.

Si default_factory n'est pas None, l'appeler sans argument fournit une valeur par défaut pour la clé donnée, qui est insérée dans le dictionnaire de la clé et renvoyée.

2)default_factory

DefaultDict对象支持default_factory实例变量。该属性由__missing__()方法使用。如果存在,则从构造函数的第一个参数开始初始化;如果不存在,则初始化为None。

Programmation Python : explication détaillée des sous-classes et applications du dictionnaire intégré (dict) (le tout au même endroit)

运行程序输出结果为:

[('blue', [2, 4]), ('red', [1]), ('yellow', [1, 3])]

在上述代码中,我们使用列表类型作为default_factory,更易于将包含键值序列对的列表组成字典。当第一次遇到每个键时,它还不在映射中,因此使用default_factory函数自动创建一个条目,该函数返回一个空列表。然后list.append()操作将值连接到新列表。当再次遇到键时,查找正常进行(返回该键的列表),然后list.append()操作将另一个值添加到列表中。这种技术比使用dict.setdefault()的等效技术要简单得多。

我们再看一个示例:

Programmation Python : explication détaillée des sous-classes et applications du dictionnaire intégré (dict) (le tout au même endroit)

输出结果如下:

[('a', 2), ('c', 1), ('g', 2), ('h', 1), ('i', 1), ('j', 1), ('n', 2)]

在上面代码中,我们将default_factory设置为int。这使得defaultdict用于计数(就像其他语言中的bag或multiset)。

当第一次遇到某个字母时,它就在映射中是不存在的,因此default_factory函数调用int()来提供一个默认的0计数。然后递增操作为每个字母建立计数。

提示:这里传递的int()函数默认返回的是整数0。若想返回任意值,可以自定义个一个基于lambda的常量函数。示例代码如下:

Programmation Python : explication détaillée des sous-classes et applications du dictionnaire intégré (dict) (le tout au même endroit)

一言以蔽之:使用DefaultDict的好处就是可以避免KeyError异常,并进行一些可能的特定处理。

本文小结

本文主要介绍了Python字典(dict)类相关的几个内置子类的应用。这些直接相关的子类分别是OrderedDict、defaultdict、userDict等内置子类。通过示例代码和关联描述,让你更轻松掌握它们的应用和基本规则。

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer
Python vs C: courbes d'apprentissage et facilité d'utilisationPython vs C: courbes d'apprentissage et facilité d'utilisationApr 19, 2025 am 12:20 AM

Python est plus facile à apprendre et à utiliser, tandis que C est plus puissant mais complexe. 1. La syntaxe Python est concise et adaptée aux débutants. Le typage dynamique et la gestion automatique de la mémoire le rendent facile à utiliser, mais peuvent entraîner des erreurs d'exécution. 2.C fournit des fonctionnalités de contrôle de bas niveau et avancées, adaptées aux applications haute performance, mais a un seuil d'apprentissage élevé et nécessite une gestion manuelle de la mémoire et de la sécurité.

Python vs C: gestion et contrôle de la mémoirePython vs C: gestion et contrôle de la mémoireApr 19, 2025 am 12:17 AM

Python et C ont des différences significatives dans la gestion et le contrôle de la mémoire. 1. Python utilise la gestion automatique de la mémoire, basée sur le comptage des références et la collecte des ordures, simplifiant le travail des programmeurs. 2.C nécessite une gestion manuelle de la mémoire, en fournissant plus de contrôle mais en augmentant la complexité et le risque d'erreur. Quelle langue choisir doit être basée sur les exigences du projet et la pile de technologie d'équipe.

Python pour l'informatique scientifique: un look détailléPython pour l'informatique scientifique: un look détailléApr 19, 2025 am 12:15 AM

Les applications de Python en informatique scientifique comprennent l'analyse des données, l'apprentissage automatique, la simulation numérique et la visualisation. 1.Numpy fournit des tableaux multidimensionnels et des fonctions mathématiques efficaces. 2. Scipy étend la fonctionnalité Numpy et fournit des outils d'optimisation et d'algèbre linéaire. 3. Pandas est utilisé pour le traitement et l'analyse des données. 4.Matplotlib est utilisé pour générer divers graphiques et résultats visuels.

Python et C: trouver le bon outilPython et C: trouver le bon outilApr 19, 2025 am 12:04 AM

Que ce soit pour choisir Python ou C dépend des exigences du projet: 1) Python convient au développement rapide, à la science des données et aux scripts en raison de sa syntaxe concise et de ses bibliothèques riches; 2) C convient aux scénarios qui nécessitent des performances élevées et un contrôle sous-jacent, tels que la programmation système et le développement de jeux, en raison de sa compilation et de sa gestion de la mémoire manuelle.

Python pour la science des données et l'apprentissage automatiquePython pour la science des données et l'apprentissage automatiqueApr 19, 2025 am 12:02 AM

Python est largement utilisé dans la science des données et l'apprentissage automatique, s'appuyant principalement sur sa simplicité et son puissant écosystème de bibliothèque. 1) Pandas est utilisé pour le traitement et l'analyse des données, 2) Numpy fournit des calculs numériques efficaces, et 3) Scikit-Learn est utilisé pour la construction et l'optimisation du modèle d'apprentissage automatique, ces bibliothèques font de Python un outil idéal pour la science des données et l'apprentissage automatique.

Apprendre Python: 2 heures d'étude quotidienne est-elle suffisante?Apprendre Python: 2 heures d'étude quotidienne est-elle suffisante?Apr 18, 2025 am 12:22 AM

Est-ce suffisant pour apprendre Python pendant deux heures par jour? Cela dépend de vos objectifs et de vos méthodes d'apprentissage. 1) Élaborer un plan d'apprentissage clair, 2) Sélectionnez les ressources et méthodes d'apprentissage appropriées, 3) la pratique et l'examen et la consolidation de la pratique pratique et de l'examen et de la consolidation, et vous pouvez progressivement maîtriser les connaissances de base et les fonctions avancées de Python au cours de cette période.

Python pour le développement Web: applications clésPython pour le développement Web: applications clésApr 18, 2025 am 12:20 AM

Les applications clés de Python dans le développement Web incluent l'utilisation des cadres Django et Flask, le développement de l'API, l'analyse et la visualisation des données, l'apprentissage automatique et l'IA et l'optimisation des performances. 1. Framework Django et Flask: Django convient au développement rapide d'applications complexes, et Flask convient aux projets petits ou hautement personnalisés. 2. Développement de l'API: Utilisez Flask ou DjangorestFramework pour construire RestulAPI. 3. Analyse et visualisation des données: utilisez Python pour traiter les données et les afficher via l'interface Web. 4. Apprentissage automatique et AI: Python est utilisé pour créer des applications Web intelligentes. 5. Optimisation des performances: optimisée par la programmation, la mise en cache et le code asynchrones

Python vs. C: Explorer les performances et l'efficacitéPython vs. C: Explorer les performances et l'efficacitéApr 18, 2025 am 12:20 AM

Python est meilleur que C dans l'efficacité du développement, mais C est plus élevé dans les performances d'exécution. 1. La syntaxe concise de Python et les bibliothèques riches améliorent l'efficacité du développement. Les caractéristiques de type compilation et le contrôle du matériel de CC améliorent les performances d'exécution. Lorsque vous faites un choix, vous devez peser la vitesse de développement et l'efficacité de l'exécution en fonction des besoins du projet.

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

Listes Sec

Listes Sec

SecLists est le compagnon ultime du testeur de sécurité. Il s'agit d'une collection de différents types de listes fréquemment utilisées lors des évaluations de sécurité, le tout en un seul endroit. SecLists contribue à rendre les tests de sécurité plus efficaces et productifs en fournissant facilement toutes les listes dont un testeur de sécurité pourrait avoir besoin. Les types de listes incluent les noms d'utilisateur, les mots de passe, les URL, les charges utiles floues, les modèles de données sensibles, les shells Web, etc. Le testeur peut simplement extraire ce référentiel sur une nouvelle machine de test et il aura accès à tous les types de listes dont il a besoin.

PhpStorm version Mac

PhpStorm version Mac

Le dernier (2018.2.1) outil de développement intégré PHP professionnel

Télécharger la version Mac de l'éditeur Atom

Télécharger la version Mac de l'éditeur Atom

L'éditeur open source le plus populaire

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Puissant environnement de développement intégré PHP