Înapoi la blog
#python#dicționare#structuri-de-date

Dicționarele în Python explicate simplu

Dicționarele leagă o cheie de o valoare și fac codul tău rapid și clar. Învață cum le creezi, le citești, le actualizezi și când să le folosești.

Imaginează-ți un catalog: pentru fiecare elev (cheie) ai o notă (valoare). Exact așa funcționează un dicționar în Python. E una dintre cele mai puternice și mai folosite structuri de date, iar după acest articol o vei înțelege complet.

Ce este un dicționar?

Un dicționar (dict) păstrează perechi cheie → valoare. Spre deosebire de listă, unde cauți după poziție, aici cauți după cheie.

note = {"Ana": 9, "Mihai": 7, "Ioana": 10}
print(note["Ana"])   # 9

Se scrie între acolade { }, cu perechi de forma cheie: valoare.

De ce sunt utile?

Compară cele două variante de a căuta nota Anei:

  • Cu listă: parcurgi tot și verifici fiecare nume — lent.
  • Cu dicționar: scrii note["Ana"] și ai răspunsul instant.

Dicționarele sunt extrem de rapide la căutare, indiferent câte elemente au.

Citire, adăugare, modificare

elev = {"nume": "Ana", "varsta": 16}

# citire
print(elev["nume"])        # Ana

# adaugare cheie noua
elev["clasa"] = "a 10-a"

# modificare valoare existenta
elev["varsta"] = 17

# stergere
del elev["clasa"]

print(elev)   # {'nume': 'Ana', 'varsta': 17}

Dacă ceri o cheie care nu există cu elev["x"], primești o eroare KeyError. Soluția sigură e metoda get.

get: citire fără riscul de eroare

note = {"Ana": 9, "Mihai": 7}
print(note.get("Ioana"))        # None  (nu da eroare)
print(note.get("Ioana", 0))     # 0     (valoare implicita)

Folosește get mereu când nu ești sigur că cheia există.

Parcurgerea unui dicționar

note = {"Ana": 9, "Mihai": 7, "Ioana": 10}

for nume in note:                 # implicit, parcurge cheile
    print(nume)

for nume, nota in note.items():   # cheie si valoare
    print(nume, "are", nota)

for nota in note.values():        # doar valorile
    print(nota)

Metode importante

MetodăCe face
keys()Toate cheile
values()Toate valorile
items()Perechile (cheie, valoare)
get(k, d)Valoarea lui k, sau d dacă lipsește
pop(k)Șterge și returnează valoarea lui k
update(d2)Adaugă/actualizează din alt dicționar

Reguli pentru chei

  • Cheile trebuie să fie unice — dacă pui de două ori aceeași cheie, rămâne ultima valoare.
  • Cheile trebuie să fie de tip imuabil: str, int, tuple. Nu poți folosi o listă drept cheie.
d = {"a": 1, "a": 2}
print(d)   # {'a': 2}  -> a doua valoare a invins

Un exemplu practic: numără literele

Dicționarele sunt perfecte pentru a număra apariții:

text = "programare"
frecventa = {}
for litera in text:
    frecventa[litera] = frecventa.get(litera, 0) + 1
print(frecventa)
# {'p': 1, 'r': 3, 'o': 1, 'g': 1, 'a': 2, 'm': 1, 'e': 1}

Cu o singură linie în buclă numeri câte apariții are fiecare literă. Încearcă să faci asta doar cu liste și vei aprecia diferența.

Dicționar de dicționare

Poți combina structuri pentru date mai bogate:

elevi = {
    "Ana": {"varsta": 16, "media": 9.5},
    "Mihai": {"varsta": 17, "media": 8.0},
}
print(elevi["Ana"]["media"])   # 9.5

Când folosești dicționar vs. listă?

  • Listă — când contează ordinea și accesezi după poziție (ex: o coadă de pași).
  • Dicționar — când vrei să cauți rapid după o etichetă (ex: nota după nume).

Concluzie

Dicționarul îți leagă o cheie de o valoare și îți oferă căutare aproape instantanee. Stăpânește get, items și pattern-ul de numărare de mai sus, și vei rezolva o grămadă de probleme elegant.

La ByteSchool îți arătăm cum gândesc inginerii din Big Tech atunci când aleg structura de date potrivită — pas cu pas, cu exemple reale. Vino să exersăm împreună.