CodeGym /Cours /Python SELF FR /Dictionnaires imbriqués

Dictionnaires imbriqués

Python SELF FR
Niveau 11 , Leçon 7
Disponible

7.1 Création de dictionnaires imbriqués

Les dictionnaires imbriqués sont un moyen très pratique de décrire une structure de données complexe, que tu rencontreras très souvent. Pratiquons-nous un peu à leur création.

Création de dictionnaires imbriqués

Voici un exemple de création d'un dictionnaire imbriqué :


person = {
    "name": "Alice",
    "details": {
        "age": 25,
        "city": "New York",
        "address": {
            "street": "123 Main St",
            "zip": "10001"
        },
        "mother": "Jane Smith"
    },
    "gender": "female"
}
print(person)  # Sortie : {'name': 'Alice', 'details': {'age': 25, 'city': 'New York', 'address': {'street': '123 Main St', 'zip': '10001'}, 'mother': 'Jane Smith'}, 'gender': 'female'}

Dans cet exemple, person est un dictionnaire contenant un dictionnaire imbriqué details, qui à son tour contient un autre dictionnaire imbriqué address.

Un dictionnaire imbriqué peut aussi être créé à partir de morceaux :


address = {
    "street": "123 Main St",
    "zip": "10001"
}
         
details = {
    "age": 25,
    "city": "New York",
    "address": address
}
         
person = {
    "name": "Alice",
    "details": details,
    "gender": "female"
}
print(person)  # Sortie : {'name': 'Alice', 'details': {'age': 25, 'city': 'New York', 'address': {'street': '123 Main St', 'zip': '10001'}}, 'gender': 'female'}

7.2 Accès aux éléments d'un dictionnaire imbriqué

Accéder aux éléments de dictionnaires imbriqués est simple et intuitif. Voici comment faire :

Accès aux éléments de niveau supérieur


name = person["name"]
print(name)  # Sortie : Alice

Accès aux éléments d'un dictionnaire imbriqué


age = person["details"]["age"]
city = person["details"]["city"]
print(age)  # Sortie : 25
print(city)  # Sortie : New York

Accès aux éléments d'un niveau plus profond d'imbrication


street = person["details"]["address"]["street"]
zip_code = person["details"]["address"]["zip"]
print(street)  # Sortie : 123 Main St
print(zip_code)  # Sortie : 10001

7.3 Modification des éléments d'un dictionnaire imbriqué

Si tu sais déjà comment afficher des éléments de n'importe quel niveau d'imbrication, les modifier sera encore plus simple :

Modification des valeurs de niveau supérieur


person["name"] = "Bob"
print(person["name"])  # Sortie : Bob

Modification des valeurs d'un dictionnaire imbriqué


person["details"]["age"] = 26
print(person["details"]["age"])  # Sortie : 26

Modification des valeurs à un niveau plus profond d'imbrication


person["details"]["address"]["city"] = "Los Angeles"
print(person["details"]["address"]["city"])  # Sortie : Los Angeles

Ajout de nouveaux éléments dans un dictionnaire imbriqué


person["details"]["phone"] = "123-456-7890"
print(person["details"]["phone"])  # Sortie : 123-456-7890

Suppression des éléments de niveau supérieur


# Suppression de l'élément 'country' du dictionnaire 'person'
del person["country"]
print(person)  # L'élément 'country' sera supprimé du dictionnaire

Suppression des éléments d'un dictionnaire imbriqué


# Suppression de l'élément 'phone' du dictionnaire 'details'
del person["details"]["phone"]
print(person["details"])  # L'élément 'phone' sera supprimé du dictionnaire 'details'

7.4 Parcours des dictionnaires imbriqués

Il existe plusieurs façons de parcourir tous les éléments d'un dictionnaire. Les boucles sont la méthode la plus simple :

Itération sur les éléments d'un dictionnaire imbriqué


for key, value in person.items():  # On parcourt le dictionnaire parent
    if isinstance(value, dict):  # Si la valeur est un dictionnaire
        for key2, value2 in value.items():  # On parcourt les éléments du dictionnaire enfant
            print(f"{key} --> {key2}: {value2}")

Itération récursive sur tous les niveaux d'imbrication


def print_dict(d, indent=0):
    for key, value in d.items():
        print("  " * indent + str(key) + ": ", end="")
        if isinstance(value, dict):
            print()
            print_dict(value, indent + 1)
        else:
            print(value)
        
print_dict(person)

Tu apprendras plus sur la récursion dans le sujet « Algorithmes et Structures de données ».

En passant, la récursion est pratique pour chercher une valeur profondément dans des dictionnaires imbriqués. Voici un exemple :


def find_key(d, key):
    if key in d:
        return d[key]
    for k, v in d.items():
        if isinstance(v, dict):
            result = find_key(v, key)
            if result:
                return result
    return None
        
phone = find_key(person, "phone")
print(phone)  # Sortie : None (puisque l'élément 'phone' a été supprimé)
Commentaires (1)
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION
TiLoUTe niveau 64, France, France
5 avril 2025
questionnaire sur GIT alors qu'on a pas encore eu de cours sur GIT. il faudrait plutôt un quizz sur les dictionnaires.