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 # TrueMé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 paireParcours
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 videOpé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