6. Dictionnaires et Ensembles

dict, set, opérations, dict/set comprehensions, defaultdict, Counter.


6.1 Dictionnaires (dict)

Paires clé → valeur. Mutables. Clés immuables (int, str, tuple, etc.).

d = {"nom": "Alice", "âge": 30, "ville": "Paris"}
 
d["nom"]           # "Alice"
d["pays"] = "FR"   # ajout / modification
del d["ville"]     # suppression
"nom" in d         # True

Méthodes principales

d.keys()            # vue des clés
d.values()          # vue des valeurs
d.items()           # vue des paires (clé, valeur)
 
d.get("nom")        # "Alice"
d.get("inconnu")    # None (pas d'erreur)
d.get("inconnu", 0) # 0 (valeur par défaut)
 
d.setdefault("score", 0)  # 0, et d["score"] = 0 si absent
 
d.update({"âge": 31, "pays": "FR"})  # fusion
 
d.pop("âge")        # 30, supprime la clé
d.popitem()         # retire et retourne la dernière paire

Parcours

for clé, valeur in d.items():
    print(clé, valeur)

6.2 Dict comprehensions

carrés = {x: x**2 for x in range(5)}  # {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
 
inversé = {v: k for k, v in d.items()}

6.3 Ensembles (set)

Collection non ordonnée, sans doublons, éléments hashables.

s = {1, 2, 3, 1, 2}   # {1, 2, 3}
s = set([1, 2, 2, 3])  # {1, 2, 3}
set()                   # ensemble vide

Opérations ensemblistes

A = {1, 2, 3, 4}
B = {3, 4, 5, 6}
 
A | B       # union        {1, 2, 3, 4, 5, 6}
A & B       # intersection  {3, 4}
A - B       # différence   {1, 2}
A ^ B       # différence symétrique {1, 2, 5, 6}
A <= B      # sous-ensemble ?
A >= B      # sur-ensemble ?

Méthodes

s.add(5)
s.remove(5)    # KeyError si absent
s.discard(5)   # pas d'erreur si absent
s.pop()        # retire un élément arbitraire
s.clear()

Set comprehensions

{n % 3 for n in range(10)}  # {0, 1, 2}

6.4 frozenset

Ensemble immuable (hashable, peut être clé de dict).

fs = frozenset([1, 2, 3])

6.5 collections.defaultdict

Évite les KeyError en fournissant une factory :

from collections import defaultdict
 
comptes = defaultdict(int)          # 0 par défaut
comptes["a"] += 1                   # pas d'erreur
 
groupes = defaultdict(list)         # [] par défaut
groupes["pair"].append(2)

6.6 collections.Counter

Compter les occurrences :

from collections import Counter
c = Counter(["a", "b", "a", "c", "b", "b"])
# Counter({'b': 3, 'a': 2, 'c': 1})
 
c.most_common(2)     # [('b', 3), ('a', 2)]
c["d"]               # 0 (pas d'erreur)

6.7 Fusion de dictionnaires (3.9+)

d1 = {"a": 1, "b": 2}
d2 = {"b": 3, "c": 4}
 
d1 | d2              # {"a": 1, "b": 3, "c": 4}
d1 |= d2             # fusion sur place

🔗 ← Retour au cours · ← précédent · Suivant →