Comment faire le dictionnaire en python

Tous les types de données composés que nous avons étudié en détail à ce jour - cordes, listes et tuples - sont les types de séquence, qui utilisent des entiers comme indices pour accéder aux valeurs qu'elles contiennent en leur sein.

Les dictionnaires sont encore un autre type de type composé. Ils sont le type de cartographie intégré Python. Ils carte clés. qui peut être tout type immuable, à des valeurs, qui peut être de tout type (hétérogène), tout comme les éléments d'une liste ou d'un tuple. Dans d'autres langues, ils sont appelés tableaux associatifs car ils associent une clé avec une valeur.

À titre d'exemple, nous allons créer un dictionnaire pour traduire les mots anglais en espagnol. Pour ce dictionnaire, les touches sont des chaînes.

Une façon de créer un dictionnaire est de commencer avec le dictionnaire vide et ajouter la clé: des paires de valeurs. Le dictionnaire vide est notée <> :

La première affectation crée un dictionnaire nommé eng2sp; les autres missions ajouter de nouvelles paires clé: valeur au dictionnaire. Nous pouvons imprimer la valeur actuelle du dictionnaire de la manière habituelle:

La clé: des paires de valeurs du dictionnaire sont séparés par des virgules. Chaque paire contient une clé et une valeur séparés par deux points.

Vous pourriez aussi se demander pourquoi nous utilisons des dictionnaires du tout quand le même concept de mappage d'une clé d'une valeur peut être implémentée en utilisant une liste de tuples:

La raison en est des dictionnaires sont très rapides, mis en œuvre en utilisant une technique appelée hachage, ce qui nous permet d'accéder à une valeur très rapidement. En revanche, la liste de mise en œuvre des tuples est lente. Si l'on voulait trouver une valeur associée à une clé, nous aurions à itérer sur tous les tuple, en vérifiant l'élément 0e. Et si la clé était même pas dans la liste? Il faudrait arriver à la fin de celui-ci pour savoir.

Une autre façon de créer un dictionnaire est de fournir une liste de couples clé: valeur en utilisant la même syntaxe que la sortie précédente:

Peu importe quel ordre nous écrivons les paires. Les valeurs dans un dictionnaire sont accessibles avec les touches, et non avec des indices, donc il n'y a pas besoin de se soucier de la commande.

Voici comment nous utilisons une clé pour rechercher la valeur correspondante:

La touche « deux » donne la valeur « dos ».

Listes, tuples et les chaînes ont été appelées séquences. parce que leurs éléments apparaissent dans l'ordre. Le dictionnaire est le premier type de composé que nous avons vu ce n'est pas une séquence, donc on ne peut indexer ou trancher un dictionnaire.

20.1. Dictionnaire operations¶

La déclaration del supprime une clé: paire de valeurs d'un dictionnaire. Par exemple, le dictionnaire suivant contient les noms de divers fruits et le nombre de chaque fruit en stock:

Si quelqu'un achète toutes les poires, nous pouvons supprimer l'entrée du dictionnaire:

obtenir améliore certainement la sémantique d'accès à une matrice clairsemée. Honte sur la syntaxe.

20.5. Memoization¶

Si vous avez joué autour avec la fonction FIBO du chapitre sur récursion, vous avez sans doute remarqué que plus l'argument que vous fournissez, plus la fonction prend pour exécuter. De plus, le temps d'exécution augmente très rapidement. Sur l'un de nos machines, fib (20) se termine instantanément, fib (30) prend environ une seconde et FIB (40) prend à peu près jamais.

Pour comprendre pourquoi, considérer ce graphe d'appel pour FIB avec n = 4:

Comment faire le dictionnaire en python

Un graphe d'appel montre des images de fonction (instances lorsque la fonction a été invoquée), avec des lignes reliant chaque cadre aux cadres des fonctions qu'elle appelle. Au sommet du graphe, fib n = 4 appels fib n = 3 et n = 2. À son tour, fib n = 3 appels fib n = 2 et n = 1. Et ainsi de suite.

Comptez combien de fois fib (0) et FIB (1) sont appelés. Ceci est une solution inefficace au problème, et il devient bien pire que l'argument devient plus grand.

Une bonne solution est de garder une trace des valeurs qui ont déjà été calculées en les stockant dans un dictionnaire. Une valeur précédemment calculée qui est stocké pour une utilisation ultérieure est appelé un mémo. Voici une implémentation de fib utilisant des notes de service:

Le dictionnaire nommé alreadyknown garde la trace des nombres de Fibonacci que nous connaissons déjà. Nous commençons avec seulement deux paires: 0 cartes à 1; et 1 à 1 Cartes.

Chaque fois que FIB est appelée, elle vérifie le dictionnaire pour déterminer si elle contient le résultat. Si elle est là, la fonction peut retourner immédiatement sans faire des appels plus récursives. Dans le cas contraire, il doit calculer la nouvelle valeur. La nouvelle valeur est ajoutée au dictionnaire avant le retour de la fonction.

En utilisant cette version de FIB. nos machines peuvent calculer fib (100) dans un clin d'œil.

20.6. compter letters¶

Dans les exercices du chapitre 8 (Strings), nous avons écrit une fonction qui a compté le nombre d'occurrences d'une lettre dans une chaîne. Une version plus générale de ce problème consiste à former une table de fréquence des lettres dans la chaîne, qui est, combien de fois chaque lettre apparaît.

Une telle table de fréquence peut être utile pour compresser un fichier texte. Parce que les différentes lettres apparaissent avec des fréquences différentes, on peut compresser un fichier en utilisant des codes plus courts pour des lettres et des codes plus longs pour les lettres qui apparaissent moins fréquemment.

Les dictionnaires fournissent un moyen élégant pour générer une table de fréquence:

Nous commençons par un dictionnaire vide. Pour chaque lettre dans la chaîne, on trouve le nombre actuel (peut-être zéro) et incrémenter. A la fin, le dictionnaire contient des paires de lettres et leurs fréquences.

Il pourrait être plus attrayant pour afficher la table de fréquence dans l'ordre alphabétique. Nous pouvons le faire avec les éléments et les méthodes de tri:

Remarquez dans la première ligne, nous avons dû appeler la liste des fonctions de conversion de type. Cela tourne la promesse que nous obtenons à partir d'éléments dans une liste, une étape qui est nécessaire avant de pouvoir utiliser la méthode de tri de la liste.

20.7. Glossaire¶

appeler graphe Un graphe constitué par les noeuds qui représentent des trames de fonction (ou invocations), et des bords orientés (lignes avec des flèches) démontrant qui a donné lieu à des trames d'autres trames. Dictionnaire Une collection de paires clé: valeur que les cartes de clés à des valeurs. Les touches peuvent être une valeur immuable, et la valeur associée peuvent être de tout type. des données immuables valeur A valeur de données qui ne peut être modifié. Affectation à des éléments ou des tranches (sous-parties) de valeurs immuables provoquent une erreur d'exécution. Données clés Un élément qui est mis en correspondance avec une valeur dans un dictionnaire. Les clés sont utilisés pour rechercher des valeurs dans un dictionnaire. Chaque clé doit être unique dans le dictionnaire. clé: valeur paire L'une des paires d'éléments dans un dictionnaire. Les valeurs sont recherchées dans un dictionnaire par clé. Type de mappage Un type de carte est un type de données constitué d'une collection de clés et de valeurs associées. que le type de cartographie intégrée de Python est le dictionnaire. Dictionnaires mettre en œuvre le tableau associatif abstrait type de données. note de service de stockage temporaire des valeurs précalculées pour éviter de dupliquer le même calcul. données mutables valeur A valeur de données qui peuvent être modifiées. Les types de toutes les valeurs mutables sont des types composés. Les listes et les dictionnaires sont mutable; chaînes et tuples ne sont pas.

20.8. Des exercices¶

Ecrire un programme qui lit une chaîne et retourne une table des lettres de l'alphabet dans l'ordre alphabétique qui se produisent dans la chaîne ainsi que le nombre de fois que chaque lettre se produit. doit être ignorée cas. Un exemple de sortie du programme lorsque l'utilisateur entre les données « est une chaîne avec cE majuscules et minuscules lettres », ressemblerait ce ceci:

Donnez la réponse de l'interpréteur Python à chacun des éléments suivants d'une session d'interprétation continue:

Combien de fois ne se produit le mot alice dans le livre?

Quel est le mot le plus long dans Alice au pays des merveilles? Combien de personnages-t-il?

Articles Liés