Bine ati venit

În acest articol, veți învăța cum să lucrați cu dicționarele Python, un tip de date încorporat incredibil de util pe care îl veți folosi cu siguranță în proiectele dvs.

În special, veți învăța:

  • La ce se folosesc dicționarele și principalele caracteristici ale acestora.
  • De ce sunt importante pentru proiectele dvs. de programare.
  • „Anatomia” unui dicționar: chei, valori și perechi cheie-valoare.
  • Regulile specifice care determină dacă o valoare poate fi o cheie.
  • Cum se accesează, se adaugă, se modifică și se șterg perechile cheie-valoare.
  • Cum să verificați dacă o cheie este într-un dicționar.
  • Ce reprezintă lungimea unui dicționar.
  • Cum să iterați peste dicționare folosind bucle.
  • Ce metode de dicționar încorporate puteți utiliza pentru a valorifica puterea acestui tip de date.

La sfârșitul acestui articol, ne vom scufunda într-un proiect simplu pentru a vă aplica cunoștințele: vom scrie o funcție care creează și returnează un dicționar cu un anumit scop.

Sa incepem! ⭐️

🔹 Dicționare în context

Să începem prin a discuta despre importanța dicționarelor. Pentru a ilustra acest lucru, permiteți-mi să fac o comparație rapidă cu un alt tip de date cu care probabil sunteți familiarizați: liste.

Când lucrați cu liste în Python, puteți accesa un element folosind un index, un întreg care descrie poziția elementului în listă. Indicii încep de la zero pentru primul element și cresc cu unul pentru fiecare element ulterior din listă. Puteți vedea un exemplu chiar aici:

Dictionare Python 101 o introducere vizuala detaliata

Dar dacă avem nevoie să stocăm două valori conexe și să păstrăm această „conexiune” în codul nostru? În acest moment, avem doar valori unice independente stocate într-o listă.

Să presupunem că vrem să stocăm numele studenților și să „conectăm” fiecare nume cu notele fiecărui student. Vrem să păstrăm „conexiunea” dintre ei. Cum ai face asta în Python?

Dacă utilizați liste imbricate, lucrurile ar deveni foarte complexe și ineficiente după ce adăugați doar câteva elemente, deoarece ar trebui să utilizați doi sau mai mulți indici pentru a accesa fiecare valoare, în funcție de lista finală. Aici dicționarele Python vin în ajutor.

Faceți cunoștință cu dicționarele

Un dicționar Python arată astfel (vezi mai jos). Cu un dicționar, puteți „conecta” o valoare la o altă valoare pentru a reprezenta relația dintre acestea în codul dvs. În acest exemplu, „Gino” este „conectat” la numărul întreg 15 și șirul „Nora” este „conectat” la numărul întreg 30.

1611587050 286 Dictionare Python 101 o introducere vizuala detaliata

Să vedem diferitele elemente care fac un dicționar.

🔸 „Anatomia” unui dicționar Python

Deoarece un dicționar „conectează” două valori, acesta are două tipuri de elemente:

  • Taste: o cheie este o valoare utilizată pentru a accesa o altă valoare. Cheile sunt echivalentul „indicilor” din șiruri, liste și tupluri. În dicționare, pentru a accesa o valoare, utilizați cheia, care este o valoare în sine.
  • Valori: acestea sunt valorile pe care le puteți accesa cu cheia lor corespunzătoare.
1611587050 2 Dictionare Python 101 o introducere vizuala detaliata

Aceste două elemente formează ceea ce se numește a pereche cheie-valoare (o cheie cu valoarea sa corespunzătoare).

Sintaxă

Acesta este un exemplu de dicționar Python care mapează șirul „Gino” la numărul 15 și șirul „Nora” la numărul 30:

>>> {"Gino": 15, "Nora": 30}
1611587051 273 Dictionare Python 101 o introducere vizuala detaliata
  • Pentru a crea un dicționar, folosim paranteze cretate { } .
  • Între aceste paranteze cretate, scriem perechi cheie-valoare separate printr-o virgulă.
  • Pentru perechile cheie-valoare, scriem cheia urmată de două puncte, un spațiu și valoarea care corespunde cheii.

💡 Sfaturi:

  • În scopuri de lizibilitate și stil, se recomandă adăugarea unui spațiu după fiecare virgulă pentru a separa perechile cheie-valoare.
  • Puteți crea un dicționar gol cu ​​o pereche goală de paranteze cretate {}.

Reguli importante pentru chei

Nu fiecare valoare poate fi o cheie într-un dicționar Python. Cheile trebuie să respecte un set de reguli:

In conformitate cu Documentație Python:

  • Cheile trebuie să fie unice în cadrul unui dicționar.

Cel mai bine este să te gândești la un dicționar ca la un set de valoare cheie perechi, cu cerința ca cheile să fie unic (în cadrul unui dicționar).

  • Cheile trebuie să fie imuabile.

Spre deosebire de secvențe, care sunt indexate de o serie de numere, dicționarele sunt indexate de chei, care poate fi oricare imuabil tip; șirurile și numerele pot fi întotdeauna chei.

  • Dacă cheia este un tuplu, poate conține doar șiruri, numere sau tupluri.

Tuplurile pot fi folosite ca chei dacă conțin doar șiruri, numere sau tupluri; dacă un tuplu conține orice obiect mutabil, direct sau indirect, nu poate fi folosit ca cheie.

  • Listele nu pot fi chei deoarece sunt modificabile. Aceasta este o consecință a regulii anterioare.

Nu puteți utiliza listele ca chei, deoarece listele pot fi modificate pe loc folosind alocări de index, alocări de felii sau metode precum append() și extend().

💡 Notă: Valorile nu au reguli specifice, pot fi valori mutabile sau imuabile.

🔹 Dicționare în acțiune

Acum să vedem cum putem lucra cu dicționarele în Python. Vom accesa, adăuga, modifica și șterge perechi cheie-valoare.

Vom începe să lucrăm cu acest dicționar, atribuit la ages variabil:

>>> ages = {"Gino": 15, "Nora": 30}

Accesați valorile utilizând tastele

Dacă trebuie să accesăm valoarea asociată cu o anumită cheie, scriem numele variabilei care face referire la dicționar urmată de paranteze pătrate [] și, între paranteze pătrate, cheia care corespunde valorii:

<variable>[<key>]
1611587051 910 Dictionare Python 101 o introducere vizuala detaliata

Acesta este un exemplu al modului în care putem accesa valoarea care corespunde șirului "Gino":

>>> ages = {"Gino": 15, "Nora": 30}
>>> ages["Gino"]
15

Observați că sintaxa este foarte asemănătoare cu indexarea unui șir, tupl sau listă, dar acum folosim cheia ca index în loc de număr întreg.

Dacă dorim să accesăm valoarea care corespunde „Nora”, am face acest lucru:

>>> ages = {"Gino": 15, "Nora": 30}
>>> ages["Nora"]
30

💡 Bacsis: Dacă încercați să accesați o cheie care nu există în dicționar, veți primi un KeyError:

>>> ages = {"Gino": 15, "Nora": 30}
>>> ages["Talina"]
Traceback (most recent call last):
  File "<pyshell#10>", line 1, in <module>
    ages["Talina"]
KeyError: 'Talina'

Adăugați perechi cheie-valoare

Dacă nu există o pereche cheie-valoare în dicționar, o putem adăuga. Pentru a face acest lucru, scriem variabila care face referire la dicționar urmată de cheie între paranteze pătrate, un semn egal și noua valoare:

1611587051 637 Dictionare Python 101 o introducere vizuala detaliata

Acesta este un exemplu în IDLE:

>>> ages = {"Gino": 15, "Nora": 30}

# Add the key-value pair "Talina": 24
>>> ages["Talina"] = 24

# The dictionary now has this key-value pair
>>> ages
{'Gino': 15, 'Nora': 30, 'Talina': 24}

Modificați o pereche cheie-valoare

Pentru a modifica valoarea asociată unei anumite chei, folosim aceeași sintaxă pe care o folosim pentru a adăuga o nouă pereche cheie-valoare, dar acum vom atribui noua valoare unei chei existente:

>>> ages = {"Gino": 15, "Nora": 30}

# The key "Gino" already exists in the dictionary, so its associated value
# will be updated to 45.
>>> ages["Gino"] = 45

# The value was updated to 45.
>>> ages
{'Gino': 45, 'Nora': 30}

Ștergerea unei perechi cheie-valoare

Pentru a șterge o pereche cheie-valoare, ar trebui să utilizați del cuvânt cheie urmat de numele variabilei care face referire la dicționar și, între paranteze drepte [], cheia perechii cheie-valoare:

1611587051 207 Dictionare Python 101 o introducere vizuala detaliata

Acesta este un exemplu în IDLE:

>>> ages = {"Gino": 15, "Nora": 30, "Talina": 45}

# Delete the key-value pair "Gino": 15.
>>> del ages["Gino"]

# The key-value pair was deleted.
>>> ages
{'Nora': 30, 'Talina': 45}

🔸 Verificați dacă o cheie se află într-un dicționar

Uneori, poate fi foarte util să verificați dacă o cheie există deja într-un dicționar (nu uitați că cheile trebuie să fie unice).

In conformitate cu Documentație Python:

Pentru a verifica dacă un singur cheie este în dicționar, utilizați in cuvânt cheie.

>>> ages = {"Gino": 15, "Nora": 30, "Talina": 45}
>>> "Talina" in ages
True
>>> "Gino" in ages
True
>>> "Lulu" in ages
False

in operatorul verifică cheile, nu valorile. Dacă scriem acest lucru:

>>> 15 in ages
False

Verificăm dacă cheie 15 este în dicționar, nu valoarea. Acesta este motivul pentru care expresia se evaluează la False.

💡 Bacsis: Puteți utiliza in operator pentru a verifica dacă o valoare este într-un dicționar cu .values ​​().

>>> ages = {"Gino": 15, "Nora": 30, "Talina": 45}
>>> 30 in ages.values()
True
>>> 10 in ages.values()
False

🔹 Lungimea unui dicționar Python

Lungimea unui dicționar este numărul de perechi cheie-valoare pe care le conține. Puteți verifica lungimea unui dicționar cu len () funcție pe care o folosim în mod obișnuit, la fel cum verificăm lungimea listelor, tuplurilor și șirurilor:

# Two key-value pairs. Length 2.
>>> ages = {"Gino": 15, "Nora": 30}
>>> len(ages)
2

# Three key-value pairs. Length 3.
>>> ages = {"Gino": 15, "Nora": 30, "Talina": 45}
>>> len(ages)
3

🔸 Iterarea asupra dicționarelor din Python

Puteți repeta peste dicționare folosind o buclă for. Există diverse abordări pentru a face acest lucru și toate sunt la fel de relevante. Ar trebui să alegeți abordarea care funcționează cel mai bine pentru dvs., în funcție de ceea ce încercați să realizați.

Prima opțiune – Iterează peste taste

Putem itera peste tastele unui dicționar ca acesta:

for <key> in <dictionary>:
	# Do this

De exemplu:

>>> ages = {"Gino": 15, "Nora": 30, "Talina": 45}
>>> for student in ages:
	print(student)
    
Gino
Nora
Talina

A doua opțiune – Iterează peste perechile cheie-valoare

Pentru a face acest lucru, trebuie să folosim metoda încorporată .items (), care ne permite să iterați peste perechile cheie-valoare ca tupluri ale acestui format (key, value).

for <key-value-pair-as-tuple> in <dictionary>.items():
	# Do this

De exemplu:

>>> ages = {"Gino": 15, "Nora": 30, "Talina": 45}

>>> for pair in ages.items():
	print(pair)
	
('Gino', 15)
('Nora', 30)
('Talina', 45)

A treia opțiune – Atribuiți chei și valori variabilelor individuale

Cu .items () iar pentru bucle, puteți utiliza puterea unei alocări de tupluri pentru a atribui direct cheile și valorile variabilelor individuale pe care le puteți utiliza în buclă:

>>> ages = {"Gino": 15, "Nora": 30, "Talina": 45}

# Tuple assignment to assign the key to the variable key 
# and the value to the variable value.
>>> for key, value in ages.items():
	print("Key:", key, "; Value:", value)

	
Key: Gino ; Value: 15
Key: Nora ; Value: 30
Key: Talina ; Value: 45

A patra opțiune – Iterează peste valori

Puteți itera peste valorile unui dicționar folosind .values ​​() metodă.

>>> ages = {"Gino": 15, "Nora": 30, "Talina": 45}
>>> for age in ages.values():
	print(age)

15
30
45

🔹 Metode de dicționar

Dicționarele includ metode încorporate foarte utile, care vă pot economisi timp și muncă pentru a efectua funcționalități comune:

.clar()

Această metodă elimină toate perechile cheie-valoare din dicționar.

>>> ages = {"Gino": 15, "Nora": 30, "Talina": 45}
>>> ages.clear()
>>> ages
{}

.get (, )

Această metodă returnează valoarea asociată cheii. În caz contrar, returnează valoarea implicită care a fost furnizată ca al doilea argument (acest al doilea argument este opțional).

>>> ages = {"Gino": 15, "Nora": 30, "Talina": 45}
>>> ages.get("Nora")
30
>>> ages.get("Nor", "Not Found")
'Not Found'

Dacă nu adăugați un al doilea argument, acesta este echivalent cu sintaxa anterioară cu paranteze pătrate []că ai învățat:

>>> ages = {"Gino": 15, "Nora": 30, "Talina": 45}
>>> ages["Nora"]
30
>>> ages.get("Nora")
30

.pop (, )

Această metodă elimină perechea cheie-valoare din dicționar și returnează valoarea.

>>> ages = {"Gino": 15, "Nora": 30, "Talina": 45}
>>> ages.pop("Talina")
45
>>> ages
{'Gino': 15, 'Nora': 30}

.update ()

Această metodă înlocuiește valorile unui dicționar cu valorile altui dicționar numai pentru acele chei care există în ambele dicționare.

Un exemplu în acest sens ar fi un dicționar cu note originale de trei elevi (a se vedea codul de mai jos). Vrem să înlocuim doar notele elevilor care au susținut examenul de machiaj (în acest caz, un singur elev a susținut examenul de machiaj, deci celelalte note ar trebui să rămână neschimbate).

>>> grades = {"Gino": 0, "Nora": 98, "Talina": 99}
>>> new_grades = {"Gino": 67}
>>> grades.update(new_grades)
>>> grades
{'Gino': 67, 'Nora': 98, 'Talina': 99}

Folosind metoda .update (), am putea actualiza valoarea asociată șirului „Gino” din dicționarul original, deoarece aceasta este singura cheie comună în ambele dicționare.

Valoarea inițială ar fi înlocuită de valoarea asociată acestei chei din dicționar care a fost transmisă ca argument la .update ().

💡 Sfaturi: Pentru a afla mai multe despre metodele de dicționar, vă recomand să citiți acest articol din Documentația Python.

🔸 Mini Project – Un dicționar de frecvențe

Acum vă veți aplica cunoștințele scriind o funcție freq_dict care creează și returnează un dicționar cu frecvența fiecărui element al unei liste, șiruri sau tupluri (de câte ori apare elementul). Elementele vor fi tastele și frecvențele vor fi valorile.

Cod

Vom scrie funcția pas cu pas pentru a vedea logica din spatele fiecărei linii de cod.

  • Pasul 1: Primul lucru pe care trebuie să-l facem este să scriem antetul funcției. Observați că această funcție acceptă doar un argument, lista, șirul sau tuplul, pe care îl numim data.
def freq_dict(data):
  • Pasul 2: Apoi, trebuie să creăm un dicționar gol care să mapeze fiecare element al listei, șirului sau tuplului la frecvența corespunzătoare.
def freq_dict(data):
	freq = {}
  • Pasul 3: Apoi, trebuie să parcurgem lista, șirul sau tuplul pentru a determina ce să facem cu fiecare element.
def freq_dict(data):
	freq = {}
	for elem in data: 
  • Pasul 4: Dacă elementul a fost deja inclus în dicționar, atunci elementul apare de mai multe ori și trebuie să adăugăm 1 la frecvența sa curentă. Altfel, dacă elementul nu este deja în dicționar, este prima dată când apare și valoarea sa inițială ar trebui să fie 1.
def freq_dict(data):
	freq = {}
	for elem in data:
		if elem in freq:
			freq[elem] += 1
		else:
			freq[elem] = 1
  • Pasul 5: În cele din urmă, trebuie să returnăm dicționarul.
def freq_dict(data):
	freq = {}
	for elem in data:
		if elem in freq:
			freq[elem] += 1
		else:
			freq[elem] = 1
	return freq

❗️Important: Deoarece atribuim elementele ca chei ale dicționarului, acestea trebuie să fie de un tip de date imuabil.

Exemple

Aici avem un exemplu de utilizare a acestei funcții. Observați cum dicționarul mapează fiecare caracter al șirului de câte ori apare.

>>> def freq_dict(data):
	freq = {}
	for elem in data:
		if elem in freq:
			freq[elem] += 1
		else:
			freq[elem] = 1
	return freq

>>> freq_dict("Hello, how are you?")
{'H': 1, 'e': 2, 'l': 2, 'o': 3, ',': 1, ' ': 3, 'h': 1, 'w': 1, 'a': 1, 'r': 1, 'y': 1, 'u': 1, '?': 1}

Acesta este un alt exemplu aplicat unei liste de numere întregi:

>>> def freq_dict(data):
	freq = {}
	for elem in data:
		if elem in freq:
			freq[elem] += 1
		else:
			freq[elem] = 1
	return freq

>>> freq_dict([5, 2, 6, 2, 6, 5, 2, 2, 2])
{5: 2, 2: 5, 6: 2}

Buna treaba! Acum avem funcția finală.

🔹 În rezumat

  • Dicționarele sunt tipuri de date încorporate în Python care asociază (mapează) cheile cu valorile, formând perechi cheie-valoare.
  • Puteți accesa o valoare cu cheia corespunzătoare.
  • Cheile trebuie să fie de un tip de date imuabil.
  • Puteți accesa, adăuga, modifica și șterge perechi cheie-valoare.
  • Dicționarele oferă o mare varietate de metode care vă pot ajuta să efectuați funcționalități comune.

Sper cu adevărat că ți-a plăcut articolul meu și l-ai găsit util. Acum puteți lucra cu dicționare în proiectele dvs. Python. Vezi cursurile mele online. Urmărește-mă Stare de nervozitate. ⭐️