Didaxis
lecție · Informatică

Dicționare Python

Asocieri cheie–valoare, acces și actualizarea colecției.

AprofundarePeste programa în vigoare, pentru cine vrea mai mult.
Actualizat la: 30 octombrie 2026
1pe scurtstratul 1 din 2 · rezumatul lecției

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.

Desen la lecția „Dicționare Python”
2în detaliustratul 2 din 2 · pentru clasă și Bacalaureat

Î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"] întoarce None pentru 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.
în contul tăuPremium

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:

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

lecțiile sunt gratuite

Ai citit lecția. Acum verifică-te.