CodeGym /Cours /Python SELF FR /Collection Dictionary

Collection Dictionary

Python SELF FR
Niveau 11 , Leçon 1
Disponible

1.1 Dictionnaire et ses propriétés

Le dictionnaire (dictionary) en Python est une collection ordonnée de paires clé-valeur, où chaque clé est unique. Les dictionnaires sont l'un des types de données les plus flexibles et puissants en Python, utilisés pour stocker et gérer les données. On va très souvent les utiliser, presque aussi souvent que les listes. Tu vas vite t'en rendre compte :)

Principales propriétés des dictionnaires :

1. Clés uniques

Chaque clé dans un dictionnaire doit être unique. Si une paire clé-valeur avec une clé qui existe déjà est ajoutée au dictionnaire, la valeur ancienne sera remplacée par la nouvelle. Par exemple, si tu veux stocker des données sur des étudiants et utiliser leurs identifiants comme clés :


students = {"123": "John", "124": "Alice", "123": "Mike"}
print(students)  # Affichera : {'123': 'Mike', '124': 'Alice'}

2. Ordre

Important ! Avant Python 3.7, les dictionnaires étaient des collections non ordonnées, c'est-à-dire que l'ordre des éléments n'était pas garanti. À partir de Python 3.7, les dictionnaires conservent l'ordre d'ajout des éléments, mais cet aspect n'est pas une partie obligatoire de la spécification du langage avant la version Python 3.8, où il est devenu standard.

C'était il y a 5 ans. Nous étudions Python basée sur la version 3.12 donc tu peux considérer le dictionnaire comme un ensemble ordonné d'éléments.

3. Mutabilité

Les dictionnaires sont mutables, ce qui signifie que tu peux ajouter, modifier ou supprimer des éléments après avoir créé un dictionnaire. Par exemple, ajoutons l'adresse d'un étudiant :


student = {"name": "John", "age": 20}
student["address"] = "123 Main St"
print(student)  # Affichera : {'name': 'John', 'age': 20, 'address': '123 Main St'}

4. Efficacité

Les dictionnaires sont optimisés pour une recherche rapide, l'ajout et la suppression de paires clé-valeur. En moyenne, les opérations de recherche, d'ajout et de suppression s'effectuent en temps constant, O(1). Ce qu'est la complexité des algorithmes, tu le sauras un peu plus tard quand on étudiera les sujets "Algorithmes et structures de données".

5. Clés et valeurs

Les clés dans un dictionnaire peuvent être de n'importe quel type de données immuable, tel que des chaînes, des nombres ou des tuples. Les valeurs peuvent être de n'importe quel type de données, y compris d'autres dictionnaires.

6. Méthodes d'accès et de modification

Les dictionnaires prennent en charge diverses méthodes pour accéder aux éléments, ajouter, modifier et supprimer des paires clé-valeur. Certaines de ces méthodes incluent get(), keys(), values(), items(), update(), pop(), et d'autres. Plus de détails dans les prochaines conférences.

7. Parcours des éléments

Tu peux parcourir les clés, les valeurs ou les paires clé-valeur dans un dictionnaire à l'aide de boucles. Cela permet de réaliser facilement des opérations sur les éléments du dictionnaire. Par exemple :


student = {"name": "John", "age": 20, "address": "123 Main St"}
for key, value in student.items():
    print(f"{key}: {value}")

La sortie sera :

name: John
age: 20
address: 123 Main St

8. Hashabilité des clés

Les clés dans un dictionnaire doivent être hashables (du mot hash). Cela signifie que les clés doivent avoir une valeur de hachage qui ne change pas au cours de leur vie. La valeur de hachage est obtenue avec une fonction de hachage, un algorithme qui convertit les données d'entrée de longueur arbitraire en une valeur de sortie de longueur fixe. C'est ce qu'on appelle la valeur de hachage ou le code de hachage. Les types de données immuables, tels que les chaînes, les nombres et les tuples, sont hashables et peuvent être utilisés comme clés.

Nous étudierons plus en détail les fonctions de hachage et l'hashabilité dans le sujet "Algorithmes et structures de données".

1.2 Création d'un dictionnaire avec {}

Les dictionnaires (dictionaries) en Python peuvent être créés de plusieurs façons. Voici différentes manières de créer un objet dictionnaire avec des exemples :

Utilisation des accolades {}

La manière la plus courante de créer un dictionnaire est d'utiliser des accolades avec des paires clé-valeur, séparées par des virgules. La clé et la valeur sont séparées par un deux-points.


# Création d'un dictionnaire vide
empty_dict = {}

# Création d'un dictionnaire avec des éléments
person = {
    "name": "John",
    "age": 30,
    "city": "New York"
}
print(type(person))
print(person)

Important ! La création d'un dictionnaire ressemble à la création d'un ensemble. En principe, on peut même considérer le dictionnaire comme un ensemble, composé de clés auxquelles les valeurs sont associées.

Si dans les accolades seuls les « clés » sont énumérés, un ensemble est créé, si après les clés il y a un deux-points et des valeurs sont indiquées, un dictionnaire est créé. Les accolades vides sont toujours un dictionnaire.


# Création d'un dictionnaire vide
empty_dict = {}

# Création d'un ensemble avec des éléments
unique_items = {
    "name",
    "age",
    "city"
}
print(type(unique_items))
print(unique_items)

1.3 Création d'un dictionnaire avec la fonction dict()

La fonction dict() peut être utilisée pour créer un dictionnaire à partir d'une séquence de paires clé-valeur, ainsi qu'à partir d'arguments nommés.

Exemple avec une séquence de paires clé-valeur :


# Création d'un dictionnaire à partir d'une liste de tuples
person = dict([("name", "John"), ("age", 30), ("city", "New York")])
print(person)

Exemple avec des arguments nommés. Aucune parenthèse supplémentaire ici n'est nécessaire :


# Création d'un dictionnaire avec des arguments nommés
person = dict(name="John", age=30, city="New York")
print(person)

Utilisation de la méthode dict.fromkeys()

La méthode fromkeys() crée un dictionnaire avec les clés données et une valeur par défaut.


# Création d'un dictionnaire avec des clés et une valeur par défaut
keys = ["name", "age", "city"]
default_value = None
person = dict.fromkeys(keys, default_value) 
print(person)

Le dictionnaire aura trois clés, mais elles contiendront toutes la même valeur.

1.4 Création d'un dictionnaire à partir de variables existantes

Les dictionnaires peuvent être créés en utilisant des variables comme clés et valeurs.


# Création d'un dictionnaire à partir de variables
name = "John"
age = 30
city = "New York"

person = {"name": name, "age": age, "city": city}
print(person)

1.5 Utilisation des comprehensions de dictionnaires

Les comprehensions de dictionnaires permettent de créer des dictionnaires à l'aide d'expressions courtes et concises, similaires aux comprehensions de listes.


# Création d'un dictionnaire avec une comprehension de dictionnaire
squares = {x: x**2 for x in range(1, 6)}
print(squares)

1.6 Accès aux valeurs dans un dictionnaire

Pour obtenir une valeur par sa clé, on utilise la syntaxe [] :


# Accès aux valeurs dans un dictionnaire
person = {"name": "John", "age": 30, "city": "New York"}
print(person["name"])  # Affichera : John

Important ! Si la clé n'est pas trouvée, une erreur KeyError se produira. Pour éviter cela, on peut utiliser la méthode get(), qui retourne la valeur par la clé si elle existe, ou None (ou une autre valeur par défaut), si la clé n'est pas trouvée.


# Utilisation de la méthode get() pour accéder aux valeurs dans un dictionnaire
person = {"name": "John", "age": 30, "city": "New York"}
print(person.get("name"))  # Affichera : John
print(person.get("address", "Adresse non trouvée"))  # Affichera : Adresse non trouvée

1.7 Modification des valeurs dans un dictionnaire

Les valeurs dans un dictionnaire peuvent être modifiées en les accédant par la clé et en leur attribuant une nouvelle valeur.


# Modification des valeurs dans un dictionnaire
person = {"name": "John", "age": 30, "city": "New York"}
person["age"] = 31
print(person)  # Affichera : {'name': 'John', 'age': 31, 'city': 'New York'}

1.8 Suppression d'éléments d'un dictionnaire

Les éléments peuvent être supprimés à l'aide de l'opérateur del ou de la méthode pop().


# Suppression d'un élément avec del
person = {"name": "John", "age": 30, "city": "New York"}
del person["age"]
print(person)  # Affichera : {'name': 'John', 'city': 'New York'}

# Suppression d'un élément avec pop()
person = {"name": "John", "age": 30, "city": "New York"}
age = person.pop("age")
print(person)  # Affichera : {'name': 'John', 'city': 'New York'}
print(age)     # Affichera : 30

1.9 Vérification de la présence d'une clé dans un dictionnaire

Tu peux vérifier si une clé est présente dans un dictionnaire en utilisant l'opérateur in.


# Vérification de la présence d'une clé dans un dictionnaire
person = {"name": "John", "age": 30, "city": "New York"}
print("name" in person)  # Affichera : True
print("address" in person)  # Affichera : False

1.10 Parcours des éléments d'un dictionnaire

Tu peux parcourir les clés, les valeurs ou les paires clé-valeur dans un dictionnaire :


# Parcours des clés du dictionnaire
person = {"name": "John", "age": 30, "city": "New York"}
for key in person:
    print(key)

# Parcours des valeurs du dictionnaire
for value in person.values():
    print(value)

# Parcours des paires clé-valeur du dictionnaire
for key, value in person.items():
    print(f"{key}: {value}")

1.11 Exemples d'utilisation des dictionnaires dans des tâches réelles

Examinons quelques exemples de la vie réelle où l'utilisation de dictionnaires peut être utile :

Exemple 1 : Compter la fréquence des mots dans un texte

Supposons que nous ayons un texte et que nous souhaitons compter combien de fois chaque mot apparaît dans ce texte.


text = "hello world hello"
word_count = {}
for word in text.split():
    if word in word_count:
        word_count[word] += 1
    else:
        word_count[word] = 1
print(word_count)  # Affichera : {'hello': 2, 'world': 1}

Exemple 2 : Stockage de données sur des étudiants

Nous pouvons utiliser un dictionnaire pour stocker des données sur des étudiants, où les clés seraient leurs identifiants et les valeurs leurs données.


students = {
    "123": {"name": "John", "age": 20, "major": "Computer Science"},
    "124": {"name": "Alice", "age": 22, "major": "Mathematics"}
}
print(students["123"]["name"])  # Affichera : John

Exemple 3 : Annuaire téléphonique

Les dictionnaires peuvent être utilisés pour créer un simple annuaire téléphonique, où les clés seraient les noms et les valeurs les numéros de téléphone.


phone_book = {
    "John": "123-456-7890",
    "Alice": "987-654-3210"
}
print(phone_book["Alice"])  # Affichera : 987-654-3210
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION