Dictionnaires et ensembles
Dictionnaire, clé, valeurs¶
On définit un dictionnaire en utilisant des crochets. Un dictionnaire (aussi appelé un tableau associatif ou table d'association) est une structure de données associant à un ensemble de clefs, un ensemble correspondant de valeurs. Les clés d'un dictionnaire sont donc uniques. On associe à chaque clé une unique valeur : une association clé/valeur est appelée un enregistrement. Il est possible que plusieurs clés distinctes soient associées à la même valeur.
La taille d'un dictionnaire est le nombre de clés qui le composent. Un dictionnaire est une structure mutable : on peut ajouter, modifier des éléments qui le composent.
On peut définir un dictionnaire vide à l'aide de l'instruction dict()
1 2 3 4 5 6 |
|
3
{'Zoé': '0684956523', 'Xavier': '0612756534'}
Les objets utilisés comme clés d'un dictionnaire ne doivent pas être mutables.
1 2 3 |
|
{(1, 2): 'a', (2, 1): 'b'}
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Input In [1504], in <cell line: 3>()
1 dico = {(1, 2):'a', (2, 1):'b'} # les clés sont des tuples (non mutables)
2 print(dico)
----> 3 dico = {[1, 2]:'a', [2, 1]:'b'}
TypeError: unhashable type: 'list'
Appartenance d'un élément à l'ensemble des clés¶
Il est possible de tester l'appartenance d'un élément à l'ensemble des clés d'un dictionnaire en temps constant à l'aide du mot-clé in
.
1 2 3 |
|
True
False
Recherche dans un dictionnaire¶
On accède à la valeur associé à une clé à l'aide de crochets. Si la clé n'est pas présente dans le dictionnaire, l'erreur KeyError
est soulevée.
1 2 3 4 5 |
|
1
2
1
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
Input In [1506], in <cell line: 5>()
3 print(dico['b'])
4 print(dico['c'])
----> 5 print(dico[1])
KeyError: 1
Il est possible de modifier la valeur associée à une clé d'un dictionnaire, et d'ajouter de nouveaux enregistrements.
1 2 3 4 |
|
{'a': 2, 'b': 1, 'c': 1, 'd': 5}
Parcours d'un dictionnaire¶
On peut parcourir l'ensemble des clés d'un dictionnaire. Attention, l'ordre dans lequel les éléments sont parcourus n'est pas toujours garanti.
1 2 3 |
|
La clé a est associée à la valeur 1
La clé b est associée à la valeur 2
La clé c est associée à la valeur 1
Méthodes du type dict
¶
Méthode get
¶
La méthode get
renvoie la valeur associée à la clé passée en argument, None
si la clé n'est pas présente dans le dictionnaire. Combinée avec l'opérateur de Walrus :=
, cela permet d'écrire certaines opérations de manière concise.
1 2 3 4 5 6 7 8 |
|
0695746325
Numéro inconnu
Méthode pop
¶
Il est possible de supprimer un enregistrement correspondant à une clé donnée à l'aide de la méthode pop
. Celle-ci renvoie alors la valeur associé à la clé.
1 2 3 4 |
|
{'a': 1, 'c': 1}
2
Méthode setdefault
¶
La méthode setdefault
permet de préciser une valeur par défaut pour les enregistrement. Ainsi dico.setdefault(k, 0)
:
- ne fait rien lorsque la clé
k
est déja présente dans le dictionnaire - associe la valeur
0
à la clék
si celle-ci n'est pas présente dans le dictionnaire.
1 2 3 4 5 6 |
|
{'C': 1, 'e': 9, 'c': 2, 'i': 1, ' ': 11, 's': 4, 't': 9, 'u': 2, 'n': 4, 'l': 3, 'o': 5, 'g': 1, 'x': 1, 'd': 1, 'v': 1, 'a': 1, 'm': 1, 'p': 1, 'r': 2}
Méthodes keys
, values
, items
¶
Ces méthodes renvoient respectivement la liste des clés, valeurs, et enregistrements du dictionnaire.
1 2 3 4 5 6 7 8 9 10 |
|
Parcours des clés
a
b
c
Parcours des valeurs
1
2
1
Parcours des enregistrements
a 1
b 2
c 1
Ensemble¶
Un ensemble est une collection de données sans répétition. Ainsi, un ensemble peut-être vu comme un dictionnaire dans lequel seules les clés importent. On peut définir un ensemble à l'aide du mot-clé set()
. Attention, {}
définit un dictionnaire vide.
1 2 3 4 5 |
|
{'c', 'd', 'b', 'a'}
<class 'set'>
<class 'dict'>
Comme pour les dictionnaires, on peut tester en temps constant l'appartenance d'un élément à un ensemble :
1 2 3 4 |
|
{'s', 'i', 'k', 'y', 'l', 'f', 'j', 'h', 't', 'u', 'w', 'v', 'o', 'b', 'q', 'm', 'e', 'z', 'd', 'c', 'a', 'p', 'g', 'n', 'x', 'r'}
True
False
On peut rapidement éliminer les doublons d'une liste à l'aide des fonctions list
et set
. Attention cette opération ne conserve pas l'ordre des éléments.
1 2 |
|
[0, 1, 2, -2, -1]
Méthodes du type set
¶
Méthodes add
et update
¶
Il est possible d'ajouter un élément à un ensemble à l'aide de la méthode add
, d'ajouter un ensemble d'élément à un ensemble à l'aide de la méthode update
.
1 2 3 4 5 6 7 |
|
{'c', 'd', 'b', 'a'}
{'c', 'g', 'b', 'f', 'e', 'd', 'a'}
{'e', 'g', 'f'}
Méthodes remove
et discard
¶
Il est possible de supprimer un élément d'un ensemble à l'aide de la méthode remove
. Si celui-ci n'est pas présent dans l'ensemble, une erreur est soulevée.
1 2 3 4 5 |
|
{'c', 'b'}
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
Input In [1517], in <cell line: 4>()
2 ens1.remove('a')
3 print(ens1)
----> 4 ens1.remove('a')
5 print(ens1)
KeyError: 'a'
La méthode discard
effectue la même opération, mais ne soulève pas d'erreur dans le cas où l'élément n'appartient pas à l'ensemble.
1 2 3 4 5 |
|
{'c', 'b'}
{'c', 'b'}
Méthodes union
et intersection
¶
La méthode union
(resp. intersection
) renvoie l'union (resp. intersection) des ensembles correspondants. Ceux-ci ne sont pas modifiés.
1 2 3 4 5 |
|
{'c', 'b', 'a'} {'e', 'g', 'f'}
{'c', 'b', 'a'} {'e', 'g', 'f'} {'c', 'g', 'b', 'f', 'e', 'a'}