Funciones avanzadas disponibles en la aplicación
En Python, les collections permettent de regrouper plusieurs éléments. Après avoir étudié les listes et tuples, il est essentiel de maîtriser deux types de collections puissants et couramment utilisés : les ensembles (set) et les dictionnaires (dict). Ces structures diffèrent par leur organisation, leurs propriétés et leur mode d’accès aux éléments, offrant ainsi des outils adaptés à des besoins variés en programmation.
Un ensemble est une collection non ordonnée d’éléments hétérogènes, sans doublons. On peut créer un ensemble vide avec set() ou un ensemble avec des éléments listés entre accolades {}.
Exemples :
A = set() # ensemble vide
B = {1, 3, 8} # ensemble avec trois éléments
C = {"d", "a", "t", "d", "t", "A", "d"} # doublons ignorés automatiquement
Dans l’ensemble C, les doublons sont éliminés, donc la taille réelle est inférieure au nombre d’éléments listés. La fonction len() permet de vérifier le nombre d’éléments.
Un ensemble est non indexable car ses éléments ne sont pas ordonnés : tenter d’accéder à A[0] provoque une erreur. Cependant, il est itérable, ce qui signifie qu’on peut parcourir ses éléments avec une boucle for sans garantie d’ordre :
S = {18, 5, "abc", 9, (10, 12)}
for x in S:
print(x)
Les ensembles supportent les opérations classiques de la théorie des ensembles avec une syntaxe intuitive en Python (cf. tableau ci-dessous) :
| Opérateur | Type renvoyé | Opération mathématique | Notation mathématique |
|---|---|---|---|
| x in A | bool | Appartenance | (x \in A) |
| x not in A | bool | Non-appartenance | (x \notin A) |
| A | B | set | Union | (A \cup B) |
| A & B | set | Intersection | (A \cap B) |
| A - B | set | Différence | (A \setminus B) |
| A ^ B | set | Différence symétrique | (A \Delta B) |
| A == B | bool | Égalité | (A = B) |
| A != B | bool | Non-égalité | (A \neq B) |
Exemple :
A = {1, 2, 3, 4}
B = {3, 4, 5}
print(4 in A) # True
print(A & B) # {3, 4}
print(A | B) # {1, 2, 3, 4, 5}
print(A ^ B) # {1, 2, 5}
Les ensembles disposent de méthodes pour ajouter, retirer ou modifier leurs éléments (cf. tableau ci-dessous) :
| Méthode | Description |
|---|---|
| A.add(x) | Ajoute l’élément x à l’ensemble A. |
| A.remove(x) | Retire x de A. Provoque une erreur si x n’est pas dans A. |
| A.discard(x) | Retire x de A. Ne provoque pas d’erreur si x n’est pas dans A. |
| A.pop() | Retire et renvoie un élément arbitraire de A. Provoque une erreur si A est vide. |
| A.clear() | Vide complètement l’ensemble A. |
| A.update(B) | Ajoute à A tous les éléments de l’ensemble B. |
La méthode pop() est utile pour parcourir un ensemble tout en le vidant progressivement :
while len(S) > 0:
x = S.pop()
# Traitement sur x
# S est maintenant vide
Un dictionnaire est une collection hétérogène d’éléments indexés non pas par des entiers consécutifs, mais par des clés arbitraires (chaînes, tuples, etc.). On crée un dictionnaire avec des paires clé: valeur entre accolades {}.
Exemples :
D1 = {0: "pierre", 8: "papier", -3: "ciseaux"}
D2 = {"first_name": "Camille", "last_name": "Dupont", "age": 32}
Chaque clé doit être unique : si une clé est répétée, la dernière valeur associée est conservée.
Un dictionnaire est indexable : on accède à une valeur avec D[key]. Par exemple :
print(D1[0]) # "pierre"
print(D2["age"]) # 32
Si une clé n’existe pas, une erreur est levée.
Un dictionnaire est itérable sur ses clés par défaut. La syntaxe for x in D: parcourt toutes les clés du dictionnaire D. Depuis Python 3.7, l’ordre d’itération correspond à l’ordre d’insertion des éléments, ce qui facilite la prévisibilité du parcours.
Exemple :
data = {"first_name": "Camille", "last_name": "Dupont", "age": 32}
for x in data:
val = data[x]
print("Clé :", x, " Valeur associée :", val)
Pour manipuler plus précisément les clés, valeurs ou paires, on utilise :
Exemple comparatif :
print(">> Méthode 'keys'")
for x in data.keys():
print("x =", x)
print(">> Méthode 'values'")
for x in data.values():
print("x =", x)
print(">> Méthode 'items'")
for x, y in data.items():
print("x =", x, "y =", y)
Quelques opérations essentielles :
Attention, ces opérateurs s’appliquent uniquement aux clés. Pour vérifier la présence d’une valeur, on utilisera in sur D.values().
| Méthode | Description |
|---|---|
| D.get(key) | Renvoie la valeur associée à key. Provoque une erreur si key n’existe pas. |
| D.get(key, default) | Renvoie la valeur associée à key ou default si key est absente. |
| D.pop(key) | Supprime et renvoie la valeur associée à key. Erreur si key absente. |
| D.pop(key, default) | Supprime et renvoie la valeur associée ou default si absente. |
| D.clear() | Vide complètement le dictionnaire. |
| D.update(D2) | Ajoute ou remplace les paires (clé, valeur) de D2 dans D. |
Ces méthodes permettent de gérer efficacement les contenus d’un dictionnaire.
Écrire une fonction create_dict(keys, values) qui prend deux listes de même taille et retourne un dictionnaire associant chaque clé à sa valeur correspondante.
Exemple :
def create_dict(keys, values):
return {k: v for k, v in zip(keys, values)}
# Test
print(create_dict(["a", "b", "c", "d", "e"], [8, 12, 3, 50, 37]))
# Résultat : {"a": 8, "b": 12, "c": 3, "d": 50, "e": 37}
Écrire une fonction stats(L) qui prend une liste L et renvoie un dictionnaire où :
Il faut parcourir la liste et mettre à jour le dictionnaire sans utiliser la méthode count.
Exemple :
def stats(L):
freq = {}
for x in L:
freq[x] = freq.get(x, 0) + 1
return freq
# Test
print(stats(['d', 'a', 'a', 'e', 'c', 'b', 'e', 'd', 'e', 'a', 'a', 'a']))
# Résultat : {'d': 2, 'a': 5, 'e': 3, 'c': 1, 'b': 1}
Ces exercices illustrent la puissance des dictionnaires pour organiser et analyser des données.
[Diagramme]
[Diagramme]
Cette fiche présente les bases essentielles pour manipuler efficacement les ensembles et dictionnaires en Python, deux outils incontournables pour la programmation moderne @docCh6.Ensembles et dictionnaires.pdf @docCh6.Ensembles et dictionnaires.pdf.
