« Python : Les dictionnaires » : différence entre les versions
De www.yakakliker.org
Aucun résumé des modifications |
Aucun résumé des modifications |
||
| Ligne 54 : | Ligne 54 : | ||
print(invite["nom"]) # Affiche: Alice | print(invite["nom"]) # Affiche: Alice | ||
</syntaxhighlight> | </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. | |||
Version du 21 janvier 2026 à 14:10
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.