Îți dorești să înveți cum să utilizezi eficient dicționarele în Python? Acest ghid practic îți va prezenta metodele dicționarelor Python, permițându-ți să citești, să modifici și să efectuezi diverse operațiuni comune pe aceste structuri de date.
Vom începe prin a revedea noțiunile fundamentale ale dicționarelor Python, apoi vom exemplifica prin crearea unui dicționar și modificarea acestuia cu ajutorul metodelor Python.
Să începem explorarea!
O Privire Generală Asupra Dicționarelor Python
Dicționarele reprezintă structuri de date integrate în Python. Acestea permit stocarea elementelor sub formă de perechi cheie-valoare, stabilind astfel o asociere sau mapare între chei și valorile corespunzătoare.
Cheile dintr-un dicționar trebuie să fie unice (pentru a fi ‘hashable’). Poți utiliza cheia pentru a accesa valoarea sau poți folosi metodele încorporate (pe care le vom explora în curând).
La crearea unui dicționar Python, ai opțiunea de a inițializa toate perechile cheie-valoare sau de a crea un dicționar gol, adăugând ulterior perechile cheie-valoare.
>>> dict1 = {'limbaj':'Python','apreciere':True}
>>> type(dict1)
<class 'dict'>
# sau putem proceda astfel:
>>> dict1 = {}
>>> dict1['limbaj']='Python'
>>> dict1['apreciere']=True
Metodele Dicționarelor Python pentru Operații Uzuale
Notă: Pentru a reproduce exemplele de cod, asigură-te că ai instalată o versiune Python 3.7 sau mai recentă.
Poți testa codul direct într-un mediu REPL Python sau poți folosi editorul online de la tipstrick.ro.
>>> persoana = {'nume':'Alice',
... 'oras':'Portland',
... 'interes':'Programare',
... 'profesie':'Dezvoltator'
... }
Acum că am inițializat un dicționar Python, să analizăm diferitele metode pe care le putem aplica.
Obținerea Cheilor Dicționarului cu Metoda `keys()`
O operațiune comună în lucrul cu dicționarele Python este accesarea tuturor cheilor, valorilor sau perechilor cheie-valoare. Pentru a obține toate cheile unui dicționar, poți apela metoda `keys()`, după cum urmează:
>>> persoana.keys() dict_keys(['nume', 'oras', 'interes', 'profesie'])
Obținerea Valorilor Dicționarului cu Metoda `values()`
Metoda `values()` returnează toate valorile stocate în dicționar. Aceasta este utilă atunci când dorești să manipulezi aceste valori ulterior.
Să accesăm toate valorile din dicționarul `persoana`:
>>> persoana.values() dict_values(['Alice', 'Portland', 'Programare', 'Dezvoltator'])
Obținerea Perechilor Cheie-Valoare cu Metoda `items()`
Metoda `items()` returnează o listă de tupluri care conțin perechi cheie-valoare. Apelând această metodă pe dicționarul `persoana`, obținem o listă de tupluri:
>>> persoana.items()
dict_items([('nume', 'Alice'), ('oras', 'Portland'), ('interes', 'Programare'),
('profesie', 'Dezvoltator')])
Crearea unei Copii Superficiale cu Metoda `copy()`
Metoda `copy()` returnează o copie superficială a unui dicționar Python.
>>> persoana_copie = persoana.copy()
În acest caz, `persoana_copie` este o copie superficială a dicționarului `persoana`. Să modificăm această copie prin actualizarea cheii „nume” la „Bob”.
>>> persoana_copie['nume'] = 'Bob' >>> persoana_copie
Acum, dacă verifici conținutul dicționarului `persoana_copie`, vei vedea că „numele” a fost actualizat la „Bob”.
{
'nume': 'Bob',
'oras': 'Portland',
'interes': 'Programare',
'profesie': 'Dezvoltator'
}
Însă, dicționarul original `persoana` nu a fost afectat.
>>> persoana
{
'nume': 'Alice',
'oras': 'Portland',
'interes': 'Programare',
'profesie': 'Dezvoltator'
}
Stabilirea Valorilor Implicite cu Metoda `setdefault()`
Când lucrezi cu dicționarele Python, este posibil să întâlnești excepția `KeyError` dacă o anumită cheie nu este prezentă în dicționar. Un exemplu este încercarea de a accesa cheia „vârstă”:
>>> persoana['varsta'] Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 'varsta'
Poți evita astfel de erori utilizând metodele încorporate `setdefault()` și `get()` în loc să accesezi direct valoarea.
Metoda `setdefault(key)` returnează `dict[‘key’]` dacă cheia este prezentă în dicționar.
>>> persoana.setdefault('nume')
'Alice'
Când cheia nu este prezentă, aceasta este adăugată în dicționar cu valoarea implicită `None`.
>>> persoana.setdefault('adresa')
>>> persoana
Aici, cheia „adresa” nu era prezentă în dicționarul `persoana`. Dar observăm că a fost adăugată cu valoarea implicită `None`.
{
'nume': 'Alice',
'oras': 'Portland',
'interes': 'Programare',
'profesie': 'Dezvoltator',
'adresa': None
}
Acum, putem seta cheia „adresa” la o anumită adresă:
>>> persoana['adresa'] = "10, strada xyz"
>>> persoana
{
'nume': 'Alice',
'oras': 'Portland',
'interes': 'Programare',
'profesie': 'Dezvoltator',
'adresa': '10, strada xyz'
}
De asemenea, poți specifica valoarea în apelul metodei, după cum se arată:
>>> persoana.setdefault('tara','SUA')
'SUA'
>>> persoana
Deoarece cheia „tara” nu era inițial prezentă în dicționarul `persoana`, observăm că a fost adăugată cu „SUA” ca valoare.
{
'nume': 'Alice',
'oras': 'Portland',
'interes': 'Programare',
'profesie': 'Dezvoltator',
'adresa': '10, strada xyz',
'tara': 'SUA'
}
Obținerea unei Valori Specifice cu Metoda `get()`
Metoda `get()` returnează valoarea corespunzătoare cheii. Opțional, acceptă o altă valoare implicită care este returnată dacă cheia nu este găsită în dicționar.
Când încercăm să accesăm valoarea cheii „nume”, obținem „Alice”, deoarece cheia este prezentă în `persoana`:
>>> persoana.get('nume')
'Alice'
Dicționarul `persoana` nu are o cheie „gpa”. Deci, când încercăm să obținem valoarea acesteia, nu obținem nimic în REPL Python. Însă, dacă afișezi valoarea, vei obține `None`.
>>> persoana.get('gpa')
>>> print(persoana.get('gpa'))
None
Dar dacă furnizezi valoarea implicită opțională, obții acea valoare în loc de `None`.
>>> persoana.get('gpa','nu a fost gasit')
'nu a fost gasit'
Cu toate acestea, metoda `get()` nu adaugă cheia „gpa” în dicționar.
>>> persoana
{
'nume': 'Alice',
'oras': 'Portland',
'interes': 'Programare',
'profesie': 'Dezvoltator',
'adresa': '10, strada xyz',
'tara': 'SUA'
}
Înțelegerea Diferenței Dintre `setdefault()` și `get()`
Deși ambele metode, `setdefault()` și `get()`, pot fi folosite pentru a gestiona excepția `KeyError`, să recapitulăm diferențele dintre ele:
- `dict.setdefault(key, val)` adaugă cheia cu valoarea `val` ca valoare implicită. Dacă `val` nu este specificată, cheia este adăugată cu valoarea implicită `None`.
- `dict.get(key, val)` returnează valoarea corespunzătoare cheii din dicționarul Python. Dacă cheia nu este prezentă, returnează `val` (dacă este specificată) sau `None`, dar nu adaugă cheia în dicționar.
De asemenea, poți folosi `defaultdict` în Python pentru a gestiona mai eficient erorile `KeyError`.
Actualizarea Conținutului Dicționarului cu Metoda `update()`
Poți actualiza un dicționar Python existent folosind perechi cheie-valoare dintr-un alt dicționar. De asemenea, poți actualiza cu conținutul oricărui iterabil Python utilizând metoda `update()`.
Să definim un dicționar `mai_multe_detalii`. Apoi, actualizăm dicționarul `persoana` cu conținutul din `mai_multe_detalii`:
>>> mai_multe_detalii = {'hobby':'cântat', 'apreciere':'dulciuri'}
>>> persoana.update(mai_multe_detalii)
Din rezultatul de mai jos, vedem că tastele „hobby” și „apreciere” au fost adăugate la dicționarul `persoana`.
>>> persoana
{
'nume': 'Alice',
'oras': 'Portland',
'interes': 'Programare',
'profesie': 'Dezvoltator',
'adresa': '10, strada xyz',
'tara': 'SUA',
'hobby': 'cântat',
'apreciere': 'dulciuri'
}
Eliminarea Ultimului Element Adăugat cu Metoda `popitem()`
Metoda `popitem()` poate fi utilizată pentru a elimina ultima pereche cheie-valoare adăugată într-un dicționar.
>>> persoana.popitem()
('apreciere', 'dulciuri')
După cum se vede, apelarea metodei `popitem()` din dicționarul `persoana` returnează perechea cheie-valoare (‘apreciere’, ‘dulciuri’) – ultimul element adăugat în dicționar.
De asemenea, metoda elimină perechea cheie-valoare. Poți confirma acest lucru verificând conținutul dicționarului:
>>> persoana
{
'nume': 'Alice',
'oras': 'Portland',
'interes': 'Programare',
'profesie': 'Dezvoltator',
'adresa': '10, strada xyz',
'tara': 'SUA',
'hobby': 'cântat'
}
Eliminarea unui Element din Dicționar cu Metoda `pop()`
Știm că metoda `popitem()` elimină și returnează ultima pereche cheie-valoare dintr-un dicționar Python. Cu toate acestea, uneori este necesar să eliminăm alte elemente, nu neapărat ultimul adăugat.
Pentru a face acest lucru, putem folosi metoda `pop()`: apelarea `dict.pop(key)` returnează valoarea corespunzătoare cheii și elimină perechea cheie-valoare din dicționar.
Iată un exemplu:
>>> persoana.pop('hobby')
'cântat'
Deoarece am eliminat elementul corespunzător cheii „hobby”, observăm că acesta nu mai este prezent în dicționar.
>>> persoana
{
'nume': 'Alice',
'oras': 'Portland',
'interes': 'Programare',
'profesie': 'Dezvoltator',
'adresa': '10, strada xyz',
'tara': 'SUA'
}
Dacă transmitem o cheie care nu există, vom întâlni excepția `KeyError`, după cum urmează:
>>> persoana.pop('varsta')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'varsta'
Aici, întâlnim o excepție `KeyError` deoarece cheia „varsta” nu este prezentă în dicționarul `persoana`.
Spre deosebire de metoda `pop()` a listelor, care elimină implicit ultimul element, metoda `pop()` a dicționarelor necesită o cheie. Dacă nu specifici o cheie în metodă, vei întâlni erori.
>>> persoana.pop() Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: pop expected at least 1 argument, got 0
Ștergerea Tuturor Elementelor din Dicționar cu Metoda `clear()`
Metodele `pop()` și `popitem()` elimină câte o pereche cheie-valoare odată. Dacă dorești să ștergi toate elementele dintr-un dicționar, poți utiliza metoda `clear()`.
>>> persoana.clear()
>>> persoana
{}
După cum se vede, apelarea metodei `clear()` pe dicționarul `persoana` elimină toate perechile cheie-valoare, iar dicționarul `persoana` este acum gol.
Rezumatul Metodelor Dicționarelor Python

Iată o recapitulare rapidă a metodelor dicționarelor Python pe care le-am învățat.
| Metoda | Sintaxă | Descriere |
| `keys()` | `dict1.keys()` | Returnează cheile `dict1` |
| `values()` | `dict1.values()` | Returnează valorile `dict1` |
| `items()` | `dict1.items()` | Returnează o listă cu toate perechile cheie-valoare din `dict1` |
| `copy()` | `dict1.copy()` | Returnează o copie superficială a lui `dict1` |
| `setdefault()` | `dict1.setdefault(key, default_value)` | – Adaugă cheia cu `default_value` opțională ca valoare pentru `dict1` (când nu este specificată, valoarea implicită este `None`) – Returnează `dict1[key]` dacă cheia este deja prezentă |
| `get()` | `dict1.get(key, default_value)` | – Returnează `dict1[key]` dacă cheia este prezentă în `dict1`; Altfel, returnează `default_value` – Dacă cheia nu este prezentă în `dict1` și `default_value` nu este specificată, returnează `None` |
| `update()` | `dict1.update(iterable1)` | Actualizează `dict1` cu perechi cheie-valoare din `iterable1` |
| `popitem()` | `dict1.popitem()` | Elimină și returnează ultima pereche cheie-valoare din `dict1` |
| `pop()` | `dict1.pop(key)` | – Elimină și returnează valoarea corespunzătoare cheii: `dict1[key]` – Afișează o `KeyError` dacă cheia nu este prezentă în `dict1` |
| `clear()` | `dict1.clear()` | Șterge toate elementele din `dict1` |
Concluzie
Ai învățat cum să utilizezi metodele obișnuite pentru a efectua operații de citire, actualizare și ștergere pe dicționarele Python. În plus, ai aflat cum metodele `get()` și `setdefault()` pot fi folosite pentru a gestiona excepțiile `KeyError`, returnând o valoare implicită, respectiv, adăugând o intrare cu o valoare implicită în dicționarul Python. De asemenea, poți sorta un dicționar Python după cheie sau după valoare.
Apoi, consultă lista de metode utile ale listelor Python. Spor la codat!