Python : Les dictionnaires

De www.yakakliker.org
Révision datée du 21 janvier 2026 à 14:37 par Administrateur (discussion | contributions)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)

Les dictionnaires sont déclarés en utilisant des accolades :

annuaire = {
    "clé1": 'valeur1',
    "clé2": 'valeur2',
}


Exemple :

annuaire = {
    "Jean Dupont": '0145854547',
    "Paul Joseph": '0145854547',
    "Stéphanie Leroux": '0458477854',
}


On accède ensuite aux valeurs en utilisant les clés avec des crochets :

annuaire = {
    "Jean Dupont": '0145854547',
    "Paul Joseph": '0145854547',
    "Stéphanie Leroux": '0458477854',
}
print(annuaire['Jean Dupont'])
print(annuaire['Paul Joseph'])


Nous pouvons stocker des objets imbriqués et y accéder sans problème :

personne = {
    'adresse': {
        'ville': 'Nice',
        'pays': 'France'
    }
}
print(personne['adresse']['ville'])  #  Nice
# Un dictionnaire utilise des accolades {}
invite = {
    "nom": "Alice",
    "age": 25,
    "est_present": True
}

# Accéder à une valeur via sa clé
print(invite["nom"])  # Affiche: Alice

Exemple d'un script plus complexe utilisant un dictionnaire :

import json  # Toujours en haut du fichier

def ajouter_invite(liste_invites):
    """Fonction pour ajouter un nom à la liste avec vérification."""
    nom = input("Entrez un nom (ou 'stop') : ").strip()

    if nom.lower() == "stop":
        return False

    if nom == "" or nom.isdigit():
        print("Erreur : Le nom ne peut pas être vide ou un simple nombre.")
    else:
        try:
            age = int(input(f"Âge de {nom} : "))
            nouvel_invite = {"nom": nom, "age": age}
            liste_invites.append(nouvel_invite)
            print("Invité enregistré.")
        except ValueError:
            print("Erreur : L'âge doit être un nombre entier.")

    return True

def sauvegarder_liste(liste_a_sauver, nom_fichier):
    """Enregistre la liste au format JSON."""
    try:
        with open(nom_fichier, "w", encoding="utf-8") as f:
            # On utilise le paramètre 'liste_a_sauver' et non la variable globale
            json.dump(liste_a_sauver, f, indent=4, ensure_ascii=False)
        print(f"Sauvegarde réussie dans {nom_fichier}")
    except Exception as e:
        print(f"Erreur lors de la sauvegarde : {e}")

# --- Programme principal ---
invites = []
en_cours = True

print("--- Gestionnaire d'invités Sécurisé ---")

while en_cours:
    try:
        en_cours = ajouter_invite(invites)
    except Exception as e:
        print(f"Une erreur inattendue est survenue : {e}")

print(f"\nListe finale ({len(invites)} personnes) :")
# Affichage plus propre pour des dictionnaires
for invite in invites:
    print(f"- {invite['nom']} ({invite['age']} ans)")

sauvegarder_liste(invites, "mes_invites.json")
  • ensure_ascii=False : Dans json.dump, cela permet de garder les accents (é, à, ç) lisibles directement dans le fichier JSON si vous l'ouvrez avec un bloc-notes.
  • Affichage final : Ajout d'une boucle for à la fin pour afficher proprement les données du dictionnaire plutôt que d'afficher le bloc de code brut.

Supprimer un dictionnaire d'une liste

Imaginons que vos invités sont des dictionnaires dans une liste, vous ne pouvez pas simplement faire invites.remove("Alice") car "Alice" n'est pas dans la liste, c'est le dictionnaire {"nom": "Alice", "age": 25} qui s'y trouve.

def supprimer_invite(liste_invites):
    """Cherche un nom et le retire de la liste s'il existe."""
    nom_a_chercher = input("Nom de l'invité à supprimer : ").strip()
    trouve = False

    # On parcourt la liste à l'envers ou on crée une nouvelle liste
    # La méthode la plus simple pour débuter :
    for i in liste_invites:
        if i["nom"].lower() == nom_a_chercher.lower():
            liste_invites.remove(i)
            print(f"L'invité {nom_a_chercher} a été supprimé.")
            trouve = True
            break # On arrête la boucle une fois trouvé
    
    if not trouve:
        print("Aucun invité trouvé à ce nom.")


compteur web gratuit sans pub