« Python : Les dictionnaires » : différence entre les versions

De www.yakakliker.org
Aucun résumé des modifications
Aucun résumé des modifications
 
Ligne 111 : Ligne 111 :
* '''<code>ensure_ascii=False</code>''' : Dans <code>json.dump</code>, cela permet de garder les accents (é, à, ç) lisibles directement dans le fichier JSON si vous l'ouvrez avec un bloc-notes.
* '''<code>ensure_ascii=False</code>''' : Dans <code>json.dump</code>, 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 <code>for</code> à la fin pour afficher proprement les données du dictionnaire plutôt que d'afficher le bloc de code brut.
* '''Affichage final''' : Ajout d'une boucle <code>for</code> à 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 <code>invites.remove("Alice")</code> car "Alice" n'est pas dans la liste, c'est le dictionnaire <code>{"nom": "Alice", "age": 25}</code> qui s'y trouve.<syntaxhighlight lang="python3">
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.")
</syntaxhighlight>





Dernière version du 21 janvier 2026 à 14:37

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