En Python, les dictionnaires sont des objets de stockage de données qui utilisent une clé pour récupérer une valeur. Pensez à votre liste de contacts sur votre téléphone portable ou à votre annuaire téléphonique. On recherche le nom de la personne, la clé, et son numéro de téléphone est la valeur. Les dictionnaires sont incroyablement utiles pour stocker et trier des données. Nous avons utilisé un dictionnaire dans notre pour le projet de boucle qui voyait les flux d’actualités RSS utilisés pour générer du contenu sur une page Web.
Nous allons expliquer comment créer, mettre à jour et supprimer des clés et des valeurs dans un dictionnaire, puis utiliser un dictionnaire dans un projet réel dans lequel nous créons un système de notification à l’aide de Python et nfty.sh.
Pour démontrer comment utiliser les dictionnaires en Python, nous utiliserons Thonny, un éditeur Python gratuit, facile à utiliser et multiplateforme.
1. Dans un navigateur, allez sur le site Thonny et télécharger la version pour votre système.
2. Vous pouvez également installer la version officielle de Python en utilisant ce guide. Notez que ce guide couvre l’installation sur Windows 10 et 11.
Comment créer un dictionnaire en Python
L’utilisation la plus basique d’un dictionnaire est de stocker des données. Dans cet exemple, nous allons créer un dictionnaire appelé « registre » et y stocker les noms (clés) et les registres de vaisseaux spatiaux/numéros (valeurs) des personnages de Star Trek.
1. Créez un dictionnaire vierge appelé « registre ». Les dictionnaires peuvent être créés avec des données déjà contenues, mais en créant un dictionnaire vierge, nous disposons d’une « toile vierge » à partir de laquelle commencer.
registry =
2. Ajoutez un nom et un numéro d’expédition au registre. N’oubliez pas que le nom est une clé et que le numéro du navire est la valeur. Les valeurs peuvent être des chaînes, des entiers, des flottants, des tuples et des listes.
registry["James T Kirk"] = 1701
3. Ajoutez quelques autres noms au registre.
registry["Hikaru Sulu"] = 2000
registry["Kathryn Janeway"] = 74656
registry["Ben Sisko"] = 74205
4. Imprimez le contenu du dictionnaire du registre.
print(registry)
5. Enregistrez le code sous starfleet-registry.py et cliquez sur Exécuter pour démarrer le code.
Liste complète des codes : création d’un dictionnaire
registry =
registry["James T Kirk"] = 1701
registry["Hikaru Sulu"] = 2000
registry["Kathryn Janeway"] = 74656
registry["Ben Sisko"] = 74205
print(registry)
Mise à jour et suppression d’entrées dans un dictionnaire.
Les dictionnaires sont modifiables (mutables dans le langage de la programmation) et cela signifie que nous pouvons mettre à jour la clé (noms) et les valeurs (numéros de navire).
Pour notre premier scénario, nous avons reçu un appel de Ben Sisko, et il souhaite que son entrée soit mise à jour vers Benjamin. Nous allons ajouter ce code à l’exemple de code précédent.
1. Ajoutez une déclaration d’impression pour montrer que nous effectuons des mises à jour. Ceci est entièrement facultatif, mais pour les besoins de cet exemple, cela précise que nous mettons à jour le dictionnaire.
print(“UPDATES”)
2. Ajoutez une clé « Benjamin Sisko » et configurez-la pour utiliser la valeur stockée sous « Ben Sisko ».
registry["Benjamin Sisko"] = registry["Ben Sisko"]
3. Supprimez « Ben Sisko » du registre.
del registry["Ben Sisko"]
4. Imprimez le contenu actuel du registre. On voit que la clé « Ben Sisko » a désormais disparu, et est remplacée par « Benjamin Sisko ». La valeur a également été transférée.
print(registry)
Ensuite, nous mettrons à jour l’entrée pour James T Kirk. Il semble qu’il ait un nouveau numéro de vaisseau (quelque chose à voir avec la définition « accidentelle » d’un mot de passe simple sur son application d’autodestruction) et nous devons donc mettre à jour la valeur de son entrée.
1. Ajoutez une déclaration d’impression pour montrer que nous effectuons des mises à jour. Ceci est entièrement facultatif, mais pour les besoins de cet exemple, cela précise que nous mettons à jour le dictionnaire.
print("Kirk's new number")
2. Mettez à jour la clé « James T Kirk » avec le nouveau numéro de navire. Notez que parce que nous ajoutons -A à la valeur, nous devons envelopper la valeur entre « » pour indiquer que nous utilisons maintenant une chaîne.
registry["James T Kirk"] = "1701-A"
3. Imprimer le contenu du registre. Nous pouvons maintenant voir que James T Kirk a un nouveau numéro de navire.
Enfin, nous devons supprimer Benjamin Sisko du registre. Il semble qu’il ait disparu alors qu’il se trouvait dans les grottes de feu de Bajor. Nous devons donc supprimer son entrée du registre. Nous utiliserons le code existant et ajouterons trois nouvelles lignes.
1. Ajoutez une instruction d’impression pour montrer que nous supprimons des entrées. Ceci est entièrement facultatif, mais pour les besoins de cet exemple, cela précise que nous supprimons des entrées du dictionnaire.
print("Deleting Benjamin Sisko")
2. Supprimez «Benjamin Sisko» du registre. Nous ne savons pas encore qui sera le nouveau capitaine.
del registry["Benjamin Sisko"]
3. Imprimez le registre pour confirmer la suppression.
print(registry)
4. Enregistrez et exécutez le code.
Liste complète des codes : mise à jour et suppression d’un dictionnaire
registry =
registry["James T Kirk"] = 1701
registry["Hikaru Sulu"] = 2000
registry["Kathryn Janeway"] = 74656
registry["Ben Sisko"] = 74205
print(registry)
print("UPDATES")
registry["Benjamin Sisko"] = registry["Ben Sisko"]
del registry["Ben Sisko"]
print(registry)
print("Kirk's new ship")
registry["James T Kirk"] = "1701-A"
print(registry)
print("Deleting Benjamin Sisko")
del registry["Benjamin Sisko"]
print(registry)
Utiliser une boucle For avec des dictionnaires
Les boucles For sont géniales. Nous pouvons les utiliser pour parcourir un objet, en récupérant les données au fur et à mesure. Utilisons-en un avec notre exemple de code existant pour parcourir les noms (clés) et imprimer le nom et le numéro du navire pour chaque capitaine.
1. Créez une boucle for pour parcourir les clés et les valeurs du dictionnaire de registre. Cette boucle parcourra tous les éléments du dictionnaire, en enregistrant la clé et la valeur actuelles à chaque itération de la boucle.
for keys, values in registry.items():
2. Créez une phrase qui intègre le nom du capitaine (clés) et le numéro/registre du navire (valeurs).
print("Captain", keys, "registry is", values)
3. Enregistrez le code et cliquez sur Exécuter. Vous verrez le nom et le numéro de navire de chaque capitaine imprimés au bas de la coque Python.
Liste complète des codes : utilisation d’une boucle For avec des dictionnaires
registry =
registry["James T Kirk"] = 1701
registry["Hikaru Sulu"] = 2000
registry["Kathryn Janeway"] = 74656
registry["Ben Sisko"] = 74205
print(registry)
print("UPDATES")
registry["Benjamin Sisko"] = registry["Ben Sisko"]
del registry["Ben Sisko"]
print(registry)
print("Kirk's new ship")
registry["James T Kirk"] = "1701-A"
print(registry)
print("Deleting Benjamin Sisko")
del registry["Benjamin Sisko"]
print(registry)
for keys, values in registry.items():
print("Captain", keys, "registry is", values)
Utiliser des dictionnaires dans un projet du monde réel
Nous avons appris les bases, utilisons maintenant un dictionnaire dans un projet réel. Nous allons utiliser ntfy.sh, un service pour envoyer des notifications aux appareils Android et iOS. L’API Python pour ntfy.sh est basée sur des dictionnaires. Mieux encore, il n’y a pas de fichiers d’installation Python car il utilise le module de requêtes de Python pour gérer l’envoi de messages à ntfy.sh.
1. Installer ntfy.sh pour votre appareil Android/iOS.
2. Ouvrez l’application et cliquez sur + pour créer un nouvel abonnement.
3. Créez un nouveau sujet et cliquez sur S’abonner. Nous avons choisi d’utiliser le test. Créez un sujet qui vous est personnel. Notez également que les sujets peuvent ne pas être protégés par mot de passe, n’envoyez donc pas de données sensibles.
4. Laissez l’application ouverte sur votre appareil.
Notre attention se tourne maintenant vers notre PC exécutant Thonny.
5. Créez un fichier vierge.
6. Importez le module de requêtes. Il s’agit d’un module de code Python pré-écrit conçu pour envoyer et recevoir des connexions réseau.
import requests
7. Utilisez des requêtes pour publier un message sur ntfy. Notez que nous devons spécifier le nom du sujet, dans notre cas https://ntfy.sh/th-test, dans le cadre de l’argument de la fonction. L’argument suivant, data, est le texte que l’utilisateur verra. Mais notre intérêt se porte sur les « en-têtes » car il s’agit d’un dictionnaire qui peut contenir plusieurs entrées. À l’heure actuelle, il contient un titre pour la notification.
requests.post("https://ntfy.sh/th-test",
data="This is a test of ntfy for Tom's Hardware",
headers= "Title": "Python Dictionaries are useful" )
8. Enregistrez le code sous Dictionary-ntfy.py et cliquez sur Exécuter. Cela enverra le message aux serveurs de ntfy et à partir de là, la notification apparaîtra sur votre appareil.
Liste complète des codes : projet du monde réel
import requests
requests.post("https://ntfy.sh/th-test",
data="This is a test of ntfy for Tom's Hardware",
headers= "Title": "Python Dictionaries are useful" )
Un projet avancé de dictionnaire du monde réel
Créons un projet plus avancé, qui utilise un dictionnaire pour stocker plusieurs éléments. Nous allons réutiliser le code d’avant, mais l’ajuster pour répondre à nos besoins.
1. Notre ligne d’importation et de demandes reste la même.
import requests
requests.post("https://ntfy.sh/th-test",
2. Ouvrez et lisez un fichier en mémoire. Ce sont les données envoyées dans la notification. Dans ce cas, nous commençons par une image qui se trouve dans le même répertoire que notre code. Si l’image se trouve à un autre emplacement sur votre ordinateur, spécifiez le chemin complet du fichier.
data=open("yoga.jpg", 'rb'),
3. Créez un dictionnaire appelé « en-têtes ». Cela constitue les informations envoyées dans la notification.
headers=
4. Dans le dictionnaire des en-têtes, spécifiez les clés et valeurs suivantes.
Les messages de priorité 5 sont urgents, la priorité la plus élevée et ils feront vibrer/sonner votre téléphone en continu jusqu’à ce qu’ils reçoivent une réponse.
Balises : ce sont des emojis et des balises utilisés pour ajouter des icônes et des données supplémentaires à une notification. Si la balise contient un emoji, vous le verrez.
Titre : le titre supérieur, en gras pour la notification.
Cliquez : lorsque vous cliquez sur la notification, la page Web s’ouvre.
Nom de fichier : Le nom du fichier envoyé.
"Priority": "5",
"Tags": "rotating_light",
"Title": "Let me in, it is cold!!",
"Click": "https://www.tomshardware.com/reviews/elecfreaks-cm4-xgo",
"Filename": "yoga.jpg"
)
5. Enregistrez le code et cliquez sur Exécuter. Regardez maintenant votre appareil et vous verrez une notification affichant notre message personnalisé.
Liste complète des codes : projet avancé
import requests
requests.post("https://ntfy.sh/th-test",
data=open("yoga.jpg", 'rb'),
headers=
"Priority": "5",
"Tags": "rotating_light",
"Title": "Let me in, it is cold!!",
"Click": "https://www.tomshardware.com/reviews/elecfreaks-cm4-xgo",
"Filename": "yoga.jpg"
)