10 metode utile de dicționar Python

Îț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!