Aller au contenu

Définition et création d'un dictionnaire

I. Les dictionnaires { 🐉 : 2, đŸ· : 5, 🐂 : 40}⚓

Dictionnaire : définition

Un dictionnaire est de type dict en Python. Il est constitué de paires non ordonnées clé : valeur.
Chaque clé est présente de façon unique dans le dictionnaire.

Un dictionnaire s'écrit avec des accolades {clé : valeur 
}.

On accÚde à une valeur d'un dictionnaire à l'aide d'une clé.

Les clĂ©s doivent ĂȘtre de types immuables (ne peuvent pas ĂȘtre modifiĂ©es).
đŸŒ” On peut donc par exemple choisir comme clĂ© des nombres, des chaĂźnes de caractĂšres, des tuples d'Ă©lĂ©ments de types immuables, mais jamais des listes.

Exemples

Python
ferme_gaston = {"lapin": 5, "vache": 7, "cochon": 2, "cheval": 4}
amis_gaston = {0612457899 : "Gustave", 0712345678 : "Alice", 0998876554 : "Bob"}
Question

On peut choisir comme clé d'un dictionnaire

  • "nom"
  • ["pomme", "Golden"]
  • 5
  • ("pain", "baguette")
  • ✅ "nom" est une chaĂźne de caractĂšres immuable
  • ❌ Une liste n'est pas immuable
  • ✅ Un entier est immuable
  • ✅ Un tuple de chaines de caractĂšres est immuable
Question

On peut choisir

  • comme clĂ© d'un dictionnaire "Kouign amann".
  • comme clĂ© d'un dictionnaire ["farine", "beurre", "sucre"].
  • comme valeur d'un dictionnaire "Kouign amann".
  • comme valeur d'un dictionnaire ["farine", "beurre", "sucre"].
  • ✅ "Kouign amann" est une chaĂźne de caractĂšres immuable.
  • ❌ Une liste n'est pas immuable.
  • ✅ On peut choisir n'importe quel type pour une valeur.
  • ✅ On peut choisir n'importe quel type pour une valeur.

Les dictionnaires ... vides ???

Nous pouvons créer un dictionaire vide. Pour cela il y a deux possibilités :

Python
dico_vide = {}
autre_dico_vide = dict()
Pourquoi créer un dictionnaire vide ?

😂 Parce qu'on va pouvoir le remplir ...
Nous verrons cela un peu plus bas lorsque nous créerons des dictionnaires.

📖 Le mot dictionnaire

🐘 Un dictionnaire est un ensemble non ordonnĂ© de couples clĂ© : valeur.
Dans la vie courante, nous cherchons le sens des mots dans des dictionnaires. Ces mots peuvent ĂȘtre considĂ©rĂ©s comme des « clĂ©s ». Les valeurs associĂ©es Ă  ces clĂ©s sont les textes Ă©crits pour chaque mot.

đŸŒ” Dans ces dictionnaires les clĂ©s sont rangĂ©es par ordre lexicographique pour permettre une recherche relativement rapide. Dans un dictionnaire Python, nous avons vu que l’ordre dans lequel sont Ă©crits les couples « clĂ©: valeur » n’a pas d’importance. C’est un processus dĂ©crit dans les complĂ©ments (tables de hachage) qui permet une recherche encore plus rapide (indĂ©pendante du nombre d’élĂ©ments).

II. CrĂ©ation d'un dictionnaire⚓

1. Ecriture directe du dictionnaire dans le code⚓

Nous pouvons directement écrire le dictionnaire dictionnaire = {une_cle : une_valeur , autre_cle : autre_valeur, 
}

comme par exemple ici :

Python
figurines = {"licorne": 2, "yeti": 1, "pegase": 1, "dragon": 3}

2. ComplĂ©ter un dictionnaire vide.⚓

Une façon trÚs pratique de créer un dictionnaire, est de partir d'un dictionnaire vide. Il suffit ensuite d'insérer des couples clé : valeur en utilisant les clés :

Tester

###(Dés-)Active le code aprÚs la ligne # Tests (insensible à la casse)
(Ctrl+I)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activĂ©, le texte copiĂ© dans le terminal est joint sur une seule ligne avant d'ĂȘtre copiĂ© dans le presse-papier

3. Bob fait ses courses⚓

Vous allez aider Bob a constituer le dictionnaire de ses achats.

Vous devez compléter la fonction courses qui prend en paramÚtres deux listes produits et quantites.

  • produits est une liste de chaine de caractĂšres ;
  • quantites est une liste d’entiers ;
  • produits et quantites sont de mĂȘme longueur.

Par exemple courses(["farine", "beurre", "oeufs"], [1, 2, 12]) doit renvoyer {'farine': 1, 'beurre': 2, 'oeufs': 12}

Question

Compléter le script ci-dessous :

###(Dés-)Active le code aprÚs la ligne # Tests (insensible à la casse)
(Ctrl+I)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activĂ©, le texte copiĂ© dans le terminal est joint sur une seule ligne avant d'ĂȘtre copiĂ© dans le presse-papier

Solution
Python
def courses(produits, quantites):
    panier = {}
    for i in range(len(produits)):
        panier[produits[i]] = quantites[i]
    return panier
Remarque

Il existe d'autres méthodes pour créer des dictionnaires. Nous en évoquerons quelques unes dans la partie "compléments" de ce cours.

Et dans les langages autres que Python ?

Les dictionnaires sont egalement prĂ©sents dans d’autres langages sous le nom de "mĂ©moires associatives" ou de "tableaux associatifs "