Les dictionnaires
Chercher une clé absente d'un dictionnaire arrête le programme avec KeyError, mais d.get(key, 0) renvoie 0 à la place.
Seoyeon a 12 bulletins et trois candidats
Cette table est un dictionnaire. Un dictionnaire stocke des paires : une clé et la valeur qui l'accompagne. On l'écrit entre accolades, avec deux-points entre chaque clé et sa valeur. Pour lire une valeur, mets la clé entre crochets, comme tu mettrais un indice après une liste. Pour ajouter une paire ou en changer une, affecte à cette clé.
votes = {"Ari": 0, "Bo": 0, "Cy": 0}
votes["Bo"] = votes["Bo"] + 1
votes["Ari"] += 1
votes["Bo"] += 1
print(votes)
print(votes["Bo"]){'Ari': 1, 'Bo': 2, 'Cy': 0}
2Compter toute la boîte en une boucle
Taper une ligne par bulletin ne vaut pas mieux que des traits sur papier. Seoyeon met les bulletins dans une liste et la parcourt en boucle. Il y a un accroc : et si un bulletin désigne quelqu'un qu'elle n'a pas prévu, ou si elle préfère ne pas lister les candidats d'abord ? Lire une clé absente avec des crochets arrête le programme. La méthode get(key, default) règle cela. Elle renvoie la valeur si la clé est là et la valeur par défaut sinon, donc votes.get(name, 0) + 1 marche pour la première voix et toutes les suivantes.
ballots = ["Bo", "Ari", "Bo", "Cy", "Bo", "Ari",
"Cy", "Bo", "Ari", "Bo", "Cy", "Bo"]
votes = {}
for name in ballots:
votes[name] = votes.get(name, 0) + 1
print(votes)
print(len(ballots), sum(votes.values())){'Bo': 6, 'Ari': 3, 'Cy': 3}
12 12La dernière ligne est la vérification de Seoyeon. Douze bulletins sont entrés, et les comptes font douze au total : aucun n'a donc été perdu. Remarque l'ordre des noms dans la sortie : Bo en premier, parce que Bo est le premier nom que la boucle a rencontré. Depuis Python 3.7, un dictionnaire garde ses clés dans l'ordre où elles ont été ajoutées pour la première fois, et la section du tutoriel sur les dictionnaires le dit aussi.
Parcourir clés et valeurs ensemble
Une boucle for sur un dictionnaire donne les clés. items() donne clé et valeur ensemble, ce qu'il te faut pour un tableau de résultats. in vérifie si une clé existe, et max() avec key=votes.get trouve la clé de plus grande valeur. Ce dernier schéma est à copier tel quel, même avant que chaque partie ait du sens.
votes = {"Bo": 6, "Ari": 3, "Cy": 3}
for name, n in votes.items():
print(name, "#" * n, n)
print("Dan" in votes)
print(max(votes, key=votes.get))Bo ###### 6
Ari ### 3
Cy ### 3
False
BoLes dictionnaires apparaissent partout où les données viennent en paires nom et valeur : un mot et son sens, une station de métro et son numéro de ligne, un numéro d'élève et un nom. Les clés doivent être uniques, et affecter à une clé existante remplace son ancienne valeur au lieu d'ajouter un second exemplaire.
| dictionnaire | Des paires clé : valeur entre { } |
| clé | Le nom par lequel on cherche une valeur ; les clés sont uniques |
| d[key] | Lit la valeur ; KeyError si la clé manque |
| d.get(key, default) | Lit la valeur, ou donne la valeur par défaut si la clé manque |
| d.items() | Les paires clé et valeur pour une boucle for |
| key in d | True si le dictionnaire a cette clé |
- Qu'affiche ce code ?
price = {"gimbap": 3500, "ramen": 4500} print(price["ramen"]) - Qu'affiche ce code ?
price = {"gimbap": 3500} price["tteokbokki"] = 5000 print(len(price)) - Qu'affiche ce code ?
price = {"gimbap": 3500} price["gimbap"] = 4000 print(price) - Qu'affiche ce code ?
stock = {"pens": 4} print(stock.get("pens", 0), stock.get("tape", 0)) - Que se passe-t-il quand ce code s'exécute ?
stock = {"pens": 4} print(stock["tape"])- Il affiche 0
- Il affiche None
- Il affiche tape
- Il s’arrête avec KeyError: 'tape'
- Qu'affiche ce code ?
counts = {} for ch in "hello": counts[ch] = counts.get(ch, 0) + 1 print(counts["l"]) - Qu'affiche ce code ?
ages = {"Mina": 14, "Jun": 13} print("Jun" in ages, 14 in ages) - Qu'affiche ce code ?
d = {"b": 2, "a": 1} for k in d: print(k)a
bb
a2
1b 2
a 1
- Qu'affiche ce code ?
scores = {"Ari": 3, "Bo": 6, "Cy": 3} print(max(scores, key=scores.get)) - Qu'affiche ce code ?
d = {"x": 1, "y": 2} total = 0 for k, v in d.items(): total += v print(total)
- « votes["Dan"] donne 0 si Dan n'a reçu aucune voix. » Si "Dan" n'a jamais été ajouté comme clé, la recherche s'arrête avec KeyError: 'Dan'. Utilise votes.get("Dan", 0) quand une clé peut manquer.
- « 14 in ages vérifie si quelqu'un a 14 ans. » in regarde les clés, pas les valeurs. Pour chercher dans les valeurs, écris 14 in ages.values().
- « Les dictionnaires ont des positions comme les listes, donc votes[0] est le premier candidat. » Un dictionnaire se consulte par clé, pas par position. votes[0] cherche une clé égale à 0 et donne KeyError: 0.
- Un dictionnaire stocke des paires clé : valeur dans { }.
- d[key] lit une valeur ; une clé absente donne KeyError.
- d.get(key, default) évite le KeyError.
- counts[x] = counts.get(x, 0) + 1 est le schéma de comptage.
- for k, v in d.items() : parcourt les paires dans l'ordre où elles ont été ajoutées.
Sources de ce cours (6)
- Python Software Foundation, The Python Tutorial for Python 3.12 (docs.python.org/3.12/tutorial: 2 Using the Python Interpreter, 3 An Informal Introduction to Python (numbers, text, lists), 4 More Control Flow Tools (if, for, range, break and continue, defining functions, default argument values, 4.10 coding style: 4-space indentation), 5 Data Structures (list methods, 5.5 dictionaries, insertion order), 8 Errors and Exceptions (syntax errors, exceptions, reading the traceback, handling exceptions), 15 Floating-Point Arithmetic (0.1 + 0.2))
- Built-in Functions (docs.python.org/3.12/library/functions.html: print, input, len, int, float, str, type, round (round half to even: round(0.5) and round(-0.5) are 0, round(1.5) is 2), range, sum, min, max, sorted)
- Built-in Types (str methods upper, lower, replace, strip; dict.get; list.append, pop, remove, sort returning None)
- General Python FAQ (docs.python.org/3.12/faq/general.html: Guido van Rossum began Python in the 1989 Christmas holidays, posted it to USENET in February 1991, named it after Monty Python's Flying Circus)
- Curriculum for the Korean pages: 교육부 고시 제2022-33호 [별책 10] 정보과 교육과정 (PDF read 2026-10-19: 중학교 정보 [9정03-05] 리스트 등 데이터를 순차적으로 저장하는 구조, [9정03-06] 논리 연산과 중첩 제어 구조, [9정03-07] 함수 활용과 디버거로 오류 수정, [9정03-08] 실생활 문제를 프로그래밍으로 해결, 적용 시 고려 사항 「학생의 수준을 고려하여 적합한 프로그래밍 언어를 선정」; 고등학교 정보 [12정03-04] 자료형, [12정03-05] 표준입출력, [12정03-07] 제어 구조)
- Bug story only: Smithsonian National Museum of American History, Log Book With Computer Bug, 1947, Harvard Mark II, "first actual case of bug being found", probably not Hopper's log book (americanhistory.si.edu/collections/object/nmah_334663, read 2026-10-19)
Consulté le: 2026-10-19