0Pricing
DSA Interview Prep · Leçon

Dictionnaires et ensembles en Python

Explorez la construction des dictionnaires et des ensembles, les tests d’appartenance et les schémas courants, comme le comptage des fréquences avec collections.Counter.

Dictionnaires et ensembles en Python est une leçon DSA Interview Prep gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage DSA Interview Prep, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours DSA Interview Prep comprend 4 leçons au total.

Dictionnaires Python : associations clé-valeur

Un dictionnaire Python associe des clés à des valeurs, avec une complexité moyenne en O(1) pour la recherche, l’insertion et la suppression. Il est au cœur des problèmes de deux sommes, des vérifications d’anagrammes et du comptage des fréquences. Le code montre comment l’utiliser.

d = {'apple': 3, 'banana': 5}
print(d['apple'])   # 3
d['cherry'] = 7
print(len(d))       # 3
print('banana' in d)  # True
del d['apple']
print(d)            # {'banana': 5, 'cherry': 7}

Recherche sûre avec .get()

Lire une clé absente avec d[key] provoque une erreur KeyError. Utilisez d.get(key, default) pour renvoyer une valeur de remplacement : c’est une habitude sûre qui évite les erreurs d’exécution inattendues.

freq = {}
words = ['the', 'cat', 'sat', 'on', 'the', 'mat']
for w in words:
    freq[w] = freq.get(w, 0) + 1
print(freq)
# {'the': 2, 'cat': 1, 'sat': 1, 'on': 1, 'mat': 1}

print(freq.get('dog', 0))  # 0  (no KeyError)

defaultdict pour regrouper plus simplement

defaultdict(list) crée automatiquement une liste vide pour toute nouvelle clé, ce qui élimine le code répétitif des problèmes de regroupement. defaultdict(int) initialise chaque clé à 0, ce qui facilite le comptage.

from collections import defaultdict

groups = defaultdict(list)
words = ['eat', 'tea', 'tan', 'ate', 'nat', 'bat']
for w in words:
    key = ''.join(sorted(w))  # canonical anagram key
    groups[key].append(w)

print(list(groups.values()))
# [['eat','tea','ate'], ['tan','nat'], ['bat']]

Counter : tables de fréquences rapides

Counter est un dictionnaire conçu pour compter : donnez-lui n’importe quel itérable et obtenez instantanément une table de fréquences. most_common(k) renvoie les k éléments les plus fréquents. Le code montre une vérification d’anagramme.

from collections import Counter

c = Counter('abracadabra')
print(c)           # Counter({'a':5,'b':2,'r':2,'c':1,'d':1})
print(c.most_common(2))  # [('a', 5), ('b', 2)]

# Valid anagram check
def is_anagram(s, t):
    return Counter(s) == Counter(t)

print(is_anagram('anagram', 'nagaram'))  # True

Ensembles Python : collections uniques non ordonnées

Un ensemble contient des éléments uniques et permet de vérifier leur appartenance en O(1). Utilisez {1, 2, 3} ou set(iterable), mais {} crée un dictionnaire : utilisez donc set() pour un ensemble vide. C’est idéal pour repérer les doublons.

seen = set()
nums = [1, 2, 3, 2, 1, 4]
duplicates = []
for n in nums:
    if n in seen:          # O(1) check
        duplicates.append(n)
    seen.add(n)
print(duplicates)  # [2, 1]
print(len(seen))   # 4  (unique values)

Opérations sur les ensembles pour les entretiens

Les ensembles permettent de faire des opérations mathématiques : | pour l’union, & pour l’intersection, - pour la différence et ^ pour la différence symétrique. Elles résolvent en une ligne les questions du type « éléments communs ».

a = {1, 2, 3, 4}
b = {3, 4, 5, 6}

print(a | b)  # {1, 2, 3, 4, 5, 6}  union
print(a & b)  # {3, 4}              intersection
print(a - b)  # {1, 2}              difference
print(a ^ b)  # {1, 2, 5, 6}        symmetric diff

Vérification d’appartenance : liste ou ensemble

La structure choisie modifie la vitesse d’exécution. Vérifier in dans une liste coûte O(n), alors que dans un ensemble cela coûte O(1). Convertir une liste en ensemble avant d’effectuer des recherches répétées est une optimisation courante.

word_list = ['apple', 'banana', 'cherry', 'date']
word_set  = set(word_list)

# O(n) per check
print('banana' in word_list)  # True

# O(1) per check
print('banana' in word_set)   # True

# Practical example: find common elements
a = [1, 2, 3, 4, 5]
b = [3, 4, 5, 6, 7]
common = [x for x in a if x in set(b)]
print(common)  # [3, 4, 5]

Parcourir les dictionnaires : clés, valeurs et éléments

Parcourez un dictionnaire avec .keys(), .values() ou .items(). Ne supprimez jamais de clés pendant la boucle : rassemblez-les d’abord dans une liste, puis supprimez-les après. Consultez le code.

scores = {'Alice': 90, 'Bob': 75, 'Carol': 88}

for name, score in scores.items():
    print(f'{name}: {score}')

# Find key with max value
best = max(scores, key=scores.get)
print(best)  # Alice

# Safe deletion
to_del = [k for k, v in scores.items() if v < 80]
for k in to_del:
    del scores[k]
print(scores)  # {'Alice': 90, 'Carol': 88}

Frozenset : ensembles hachables

Un frozenset est un ensemble immuable ; il peut donc servir de clé de dictionnaire ou être contenu dans un autre ensemble. C’est pratique pour regrouper les anagrammes selon leur ensemble de lettres lorsque l’ordre n’a pas d’importance.

from collections import defaultdict

words = ['eat', 'tea', 'tan', 'ate', 'nat', 'bat']
groups = defaultdict(list)
for w in words:
    key = frozenset(w)  # hashable; 'eat','tea','ate' all share same key
    groups[key].append(w)

print([sorted(g) for g in groups.values()])
# [['ate','eat','tea'], ['nat','tan'], ['bat']]

Compréhensions de dictionnaires pour transformer les données

Les compréhensions de dictionnaires construisent une association en une ligne : {k: v for ...}. Elles sont idéales pour inverser un dictionnaire ou filtrer des paires. Attention : l’inversion suppose que les valeurs sont uniques. Consultez le code.

# Invert a dict
original = {'a': 1, 'b': 2, 'c': 3}
inverted = {v: k for k, v in original.items()}
print(inverted)  # {1:'a', 2:'b', 3:'c'}

# Filter by value
scores = {'Alice': 90, 'Bob': 55, 'Carol': 78}
passing = {k: v for k, v in scores.items() if v >= 60}
print(passing)  # {'Alice': 90, 'Carol': 78}

Plus longue séquence consécutive

Les ensembles résolvent le problème de la plus longue séquence consécutive en O(n) : placez tous les nombres dans un ensemble, puis comptez vers le haut uniquement à partir des nombres dont le prédécesseur est absent. Aucun tri n’est nécessaire.

def longest_consecutive(nums):
    num_set = set(nums)
    best = 0
    for n in num_set:
        if n - 1 not in num_set:  # start of sequence
            cur = n
            streak = 1
            while cur + 1 in num_set:
                cur += 1
                streak += 1
            best = max(best, streak)
    return best

print(longest_consecutive([100,4,200,1,3,2]))  # 4 (1,2,3,4)

Vérification rapide

Vérification rapide : voyez dans quelle mesure vous avez retenu les notions de dictionnaire et d’ensemble de cette leçon. Fiez-vous à votre intuition. 🎯

Récapitulatif de la leçon

Récapitulatif : les dictionnaires offrent des recherches en O(1) pour le comptage et le regroupement, Counter et defaultdict réduisent le code répétitif, et les ensembles transforment les parcours en O(n) en vérifications en O(1).

Questions Fréquemment Posées

La leçon « Dictionnaires et ensembles en Python » est-elle gratuite ?

Oui — le texte complet de « Dictionnaires et ensembles en Python » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours DSA Interview Prep, passe à CoddyKit PRO. Le cours DSA Interview Prep comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Dictionnaires et ensembles en Python » ?

Explorez la construction des dictionnaires et des ensembles, les tests d’appartenance et les schémas courants, comme le comptage des fréquences avec collections.Counter. Tu pratiques DSA Interview Prep avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer DSA Interview Prep ?

Aucune expérience préalable n'est requise. DSA Interview Prep sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.

Combien de temps prend la leçon « Dictionnaires et ensembles en Python » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon DSA Interview Prep ?

Oui. Chaque leçon DSA Interview Prep inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Listes, tuples et tranches
  2. Dictionnaires et ensembles en Python
  3. Compréhensions et fonctions intégrées
  4. Fonctions, fermetures et lambda
← Retour à DSA Interview Prep