Aller au contenu

Compléments

I. Les p-uplets nommés⚓︎

les p-uplets nommés

Il existe une autre structure que les dictionnaires qui utilise des paires clé, valeurs : les p-uplets nommés.
Contrairement aux dictionnaires, les p-uplets nommés sont immuables. Un de leur intérêt est de permettre d'accéder aux éléments d'un p-uplet grâce à une clé, plutôt qu'avec un indice.

Prenons l'exemple suivant :

Python
alice = ("Martin", "Alice", 2003, "alice@mon_mail.fr", "Melun")
bob = ("Dupond", "Bob", 2004, "bob@mon_mail.fr", "Le MĂ©e")
gaston = ("Durand", "Gaston", 2000, "gaston@mon_mail.fr", "Savigny")

Ces tuples ont tous la même structure. Si l'on désire l'année de naissance d' Alice, il faut se souvenir qu'on y accède avec alice[2]. Si l'on désire son adresse mail, il faut se souvenir qu'on y accède avec alice[3] etc.

Les p-uplets nommés permettent de remplacer les indices d'un p-uplet par des clés pour accéder à un élément. Par exemple, dans ce cas-là, l'indice 0 correspond à la clé "nom", l'indice 1 à "prenom", l'indice 2 à "annee_naissance", l'indice 3 à "mail", l'indice 4 à "ville".

Observons une première implémentation en Python :

Tester

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein Ă©cran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

Observons une seconde implémentation en Python qui permet également de nommer les clés :

Tester

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein Ă©cran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

II. Les fichiers CSV⚓︎

Les fichiers CSV

Exemple:

Text Only
nom,prenom,nb_voix
dupond,emile,514
dupond,chloe,632
dubois,Jacques,324
dupons,camille,421

Un fichier CSV est un fichier texte. La première ligne est composée des descripteurs (ici nom, prenomet nb_voix). Les lignes suivantes correspondent à des enregistrements : lignes d'un tableau où les virgules (par exemple) correspondent aux séparations entre les colonnes.

Avec Python, nous pouvons créer une liste de dictionnaires correspondant à un fichier CSV.

Dans cet exemple, nous pouvons créer la liste suivante :

Python
elections = [
            {'nom': 'dupond', 'prenom': 'emile', 'nb_voix': '514'}, 
            {'nom': 'dupond', 'prenom': 'chloe', 'nb_voix': '632'}, 
            {'nom': 'dubois', 'prenom': 'Jacques', 'nb_voix': '324'}, 
            {'nom': 'dupons', 'prenom': 'camille', 'nb_voix': '421'}
            ]

Nous trouvons beaucoup de fichiers de données CSV sur internet. Pour les exploiter, nous pourrons travailler avec des listes de dictionnaires.
Nous étudierons ceci un peu plus tard dans l'année.

III. Les tables de hash en quelques mots⚓︎

Tables de hash : vidéo d'Arnaud LEGOUT⚓︎

Dictionnaires Python : vidéo d'Arnaud LEGOUT⚓︎

IV. Les dictionnaires sont des objets mutables⚓︎

Remarque : copies de dictionnaires

Nous avons le mĂŞme comportement avec les dictionnaires qu'avec les listes. Observons cet exemple :

Python Console Session
>>> d1 = {'a': 1, 'b': 2}
>>> d2 = d1
>>> id(d1)
139633253889600
>>> id(d2)
139633253889600
>>> d1['a'] = 0
>>> d1
{'a': 0, 'b': 2}
>>> d2
{'a': 0, 'b': 2}