« Python : Les dictionnaires » : différence entre les versions
De www.yakakliker.org
Aucun résumé des modifications |
Aucun résumé des modifications |
||
| (Une version intermédiaire par le même utilisateur non affichée) | |||
| Ligne 53 : | Ligne 53 : | ||
# Accéder à une valeur via sa clé | # Accéder à une valeur via sa clé | ||
print(invite["nom"]) # Affiche: Alice | print(invite["nom"]) # Affiche: Alice | ||
</syntaxhighlight> | |||
=== Exemple d'un script plus complexe utilisant un dictionnaire : === | |||
<syntaxhighlight lang="python3"> | |||
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") | |||
</syntaxhighlight> | |||
* '''<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. | |||
=== 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> | </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: Dansjson.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.")