Pe scurt
Un dicționar Python asociază fiecărei chei o valoare. În {"Ana": 9, "Dan": 7}, cheia „Ana” are valoarea 9. Cheile sunt unice: atribuirea din nou pentru aceeași cheie înlocuiește valoarea precedentă. Accesul printr-o cheie inexistentă cu d[cheie] produce eroare; get permite un rezultat implicit.
În detaliu
Un dicționar Python (dict) memorează asocieri cheie–valoare. Cheile sunt unice și imuabile (numere, texte, tupluri), iar valorile pot fi orice. Accesul d[cheie] dă valoarea asociată și ridică KeyError dacă cheia lipsește; d.get(cheie, implicit) întoarce valoarea implicită în locul erorii, fără să adauge cheia în dicționar. Atribuirea d[cheie] = valoare adaugă o cheie nouă sau înlocuiește valoarea celei existente. Testul cheie in d verifică existența cheii. Metoda d.pop(cheie) șterge cheia și întoarce valoarea ei, del d[cheie] șterge fără să întoarcă ceva, iar d.items() parcurge perechile. Începând cu Python 3.7, dicționarul păstrează ordinea inserării cheilor; aceasta nu este o ordine alfabetică, deci pentru o ieșire sortată se folosește sorted.
Exemplul 1 — notele elevilor.
note = {"Ana": 9, "Dan": 7}
note["Ana"] = 10
print(note["Ana"], note.get("Mara", 0), note)
Prima atribuire schimbă nota Anei de la 9 la 10, fiindcă cheia există deja. Cheia "Mara" lipsește, deci get întoarce valoarea implicită 0, care nu este adăugată în dicționar. Se afișează 10 0 {'Ana': 10, 'Dan': 7}. Atribuirea note["Mara"] = 8 adaugă o cheie nouă; după ea "Mara" in note este adevărat. Apoi note.pop("Mara") întoarce 8 și șterge cheia, iar del note["Dan"] șterge cheia "Dan" fără valoare returnată; dicționarul rămâne {'Ana': 10}.
Exemplul 2 — frecvențele literelor. Un dicționar poate număra apariții: cheia este litera, iar valoarea este numărul de apariții. Pentru un caracter care nu a mai fost întâlnit, get(ch, 0) dă 0, deci se adaugă 1.
fr = {}
for ch in "banana":
fr[ch] = fr.get(ch, 0) + 1
print(fr)
Se afișează {'b': 1, 'a': 3, 'n': 2}: cheile apar în ordinea primei întâlniri a literelor în text. Pentru o listă sortată alfabetic după cheie se folosește sorted(fr.items()), care dă [('a', 3), ('b', 1), ('n', 2)]. Pentru o ordonare după frecvență descrescătoare, cu litera ca al doilea criteriu, se folosește sorted(fr.items(), key=lambda p: (-p[1], p[0])), care dă perechile a 3, n 2, b 1.
Exemplul 3 — diferența față de listă. Într-o listă, elementul se caută după poziție; într-un dicționar, după cheie. Cheile unice permit ca „Ana” să apară o singură dată: dacă s-ar adăuga încă o dată "Ana": 8, valoarea veche, 10, ar fi pierdută. O cheie mutabilă, de pildă o listă, nu este permisă și ridică TypeError. Un dicționar este potrivit când datele se caută după nume sau după un identificator.
Un dicționar se parcurge cu for cheie in d (doar cheile), d.values() (doar valorile) sau d.items() (perechi). Pentru note = {"Ana": 10, "Dan": 7}, suma valorilor este sum(note.values()), adică 17, iar cheia cu cea mai mare valoare este max(note, key=note.get), adică Ana. Lungimea len(note) este numărul cheilor.
Exemplul 4 — totaluri pe cheie. Dintr-o listă de vânzări, fiecare dată ca pereche (produs, cantitate), se calculează totalul pe produs.
vanzari = [("mere", 3), ("pere", 2), ("mere", 4)]
total = {}
for produs, cant in vanzari:
total[produs] = total.get(produs, 0) + cant
print(total)
Urmărirea: după prima pereche dicționarul este {'mere': 3}; după a doua devine {'mere': 3, 'pere': 2}; a treia găsește cheia "mere" și înlocuiește 3 cu . Se afișează {'mere': 7, 'pere': 2}. Un caz-limită apare la ștergere: într-un ciclu for k in d nu se adaugă și nu se șterg chei, pentru că dimensiunea dicționarului nu poate fi schimbată în timpul parcurgerii (Python ridică RuntimeError). Dacă ștergerea este necesară, se parcurge o copie a cheilor, for k in list(d).
Testul cheie in d este rapid: dicționarul găsește cheia fără să parcurgă toate elementele, în timp ce x in lista compară pe rând cu fiecare element. Pentru 1000 de elemente, căutarea într-o listă poate face 1000 de comparații, iar în dicționar numărul lor nu crește odată cu dimensiunea.
Greșeli frecvente
- Greșit: într-un dicționar, aceeași cheie poate apărea de două ori.Corect: cheile sunt unice; o a doua atribuire înlocuiește valoarea.
- Greșit:
d["lipsa"]întoarceNonepentru o cheie inexistentă.Corect: ridicăKeyError;getîntoarce o valoare implicită. - Greșit: ordinea inserării este ordine alfabetică.Corect: parcurgerea respectă ordinea inserării; ordinea alfabetică cere
sorted.
Testează-te pe această lecție
Lecția o citești aici, fără cont. Testele pe lecții și capitole sunt în cont, cu grile originale Didaxis și explicația fiecăreia: gratuit 10 grile pe zi, fără limită cu Premium, 49 de lei pe lună pentru fiecare copil.
Înainte și după
Surse și referințe
Redactare proprie, conform programei:
- OMEC 4370/2026, anexa 2, p. 20; rocnee.eu
Documente consultate
- Programele școlare noi de informatică pentru clasele X–XII (OMEC 4370/2026, MO 591 bis/20.07.2026), CNCE, anexa 2, p. 20–21; rocnee.eu
- Python Software Foundation, Python Tutorial, capitolul 5.5, docs.python.org/3/tutorial/datastructures.html#dictionaries
Desene: Redactare proprie (desen original), conform OMEC 4370/2026, anexa 2, Informatică X; rocnee.eu
