Într-un tutorial anterior, am vorbit despre un tip de obiect foarte versatil și flexibil în Python, și anume liste. În acest articol, îmi continuu răcoritoarele cu un alt tip de obiect flexibil Python numit dicţionare (numit si machete asociative sau hashes). Ca și în Listă, Dicționarul este un concept important de înțeles pentru a avansa în călătoria dvs. Python.
Dacă ați trecut prin liste articol, va fi ușor de înțeles conceptul de dicționare. Ele sunt destul de mult ca liste, dar cu două diferențe principale:
Fiecare tastă din dicționar are a valoare, care ar putea fi de orice tip de obiect Python. Adică, dicționarele pot fi considerate ca valoare cheie perechi. Dar, fii atent chei nu pot fi de tip Listă sau Dicționar.
După cum am văzut în secțiunea anterioară, un Dicționar este pur și simplu un set neordonat de perechi cheie-valoare. Să folosim acest concept pentru a crea primul exemplu, un dicționar englezo-francez. Acest dicționar poate fi creat după cum urmează:
english_french = 'hârtie': 'papier', 'pen': 'stylo', 'car': 'voiture', 'table': 'masă', 'door': 'porte'
Dictionarul engleza franceza
conține cinci cuvinte în limba engleză chei cu semnificațiile lor franceze stabilite ca valorile.
Să spunem că vrem să știm cum să spunem stilou
in franceza. Noi pur și simplu facem următoarele:
english_french [ 'pen']
unde veți obține stylo
ca valoare returnată.
Să presupunem că am avut french_spanish
Dicționar cu aceleași cuvinte pe care le-am avut în engleza franceza
Dicționar, după cum urmează:
french_spanish = 'papier': 'papel', 'stylo': 'pluma', 'voiture': 'coche', 'table': 'mesa', 'porte': 'puerta'
Ei bine, vi s-au întrebat cum să spun uşă
în limba spaniolă și nu aveți un dicționar englez-spaniol pe o parte! Dar, nu vă faceți griji, există o soluție. Consultați-vă engleza franceza
Dicționar pentru cuvânt, apoi utilizați rezultatul pentru a consulta french_spanish
Dicţionar. Ai rostul? Să vedem cum putem face asta în Python:
french_spanish [english_french [ 'ușă']]
Rezultatul ar trebui să fie puerta
. Nu-i așa de frumos? Tocmai ai primit cuvântul uşă
în spaniolă, deși nu aveți un dicționar englez-spaniol.
În exemplul precedent am văzut cum putem crea un dicționar și accesa elemente în dicționar. Să vedem câteva operații pe care le putem face în dicționare. O să folosesc engleza franceza
Dicționar în exemplele de mai jos.
Cu alte cuvinte, această operație are rolul de a returna numărul de perechi cheie-valoare în dicționar. Acest lucru poate fi efectuat folosind len ()
operator, după cum urmează:
len (english_french)
Ar trebui să iei 5
întors.
Ștergerea unui element într-un Dicționar este efectuată prin chei. De exemplu, să presupunem că vrem să ștergem cuvântul (cheie) uşă
din dicționar. Acest lucru se poate face pur și simplu după cum urmează:
del engleză_french ['ușă']
Acest lucru va elimina cheie uşă
împreună cu ei valoare porte
.
În subcapitolul anterior, am eliminat cheie uşă
din dicționar. Dacă vrem să verificăm dacă uşă
există încă în dicționar sau nu, tastăm:
'ușă' în engleză_french
care ar trebui să se întoarcă Fals
.
Astfel, ce credeți că va reveni următoarea declarație? Continuați și încercați (observați nu
).
"ușă" nu în engleză_french
Ce se întâmplă dacă încercăm să accesăm a cheie care nu există într-un dicționar? Spune english_french [ 'ușă']
. În acest caz, veți primi o eroare similară cu următoarea:
Trasare (ultimul apel ultimul):
Fișierul "dictionary.py", rândul 7, în
print english_french ['usa']
KeyError: "ușă"
S-ar putea să aveți nevoie de a copie de dumneavoastră engleza franceza
Dicționar și aloca acest lucru unui alt dicționar. Acest lucru se poate face pur și simplu folosind copie()
funcție, după cum urmează:
new_english_french = english_french.copy ()
După cum am menționat mai sus, valorile din dicționare pot fi de orice tip, inclusiv dicționare. Acest lucru este denumit Nesting. Un exemplu poate fi următorul:
student = 'ID': 'nume': 'Abder-Rahman', 'număr': '1234'
Astfel, dacă tastați Carnet de student']
, ar trebui să iei:
'nume': 'Abder-Rahman', 'număr': '1234'
Să ne întoarcem la engleza franceza
Dicţionar. Există mai multe moduri în care puteți itera asupra elementelor dictionarului:
pentru cuvânt în engleză_french:
imprimare cuvânt
Rezultatul acestei afirmații este următorul:
mașină
stilou
hârtie
uşă
masa
Observați că chei în rezultatul nu sunt date în aceeași ordine ca și în engleza franceza
Dicţionar. Acum puteți vedea de ce am spus că Dicționarele sunt considerate seturi neordonate.
O altă cale de iterare prin chei este după cum urmează:
pentru cuvânt în engleză_french.iterkeys ():
imprimare cuvânt
Observați că am folosit iterkeys ()
funcţie. O funcție similară care poate fi utilizată pentru a itera prin valori, și anume itervalues ()
, este după cum urmează:
pentru sensul în english_french.itervalues ():
Imprimați semnificația
Rezultatul în acest caz ar trebui să arate cam așa:
voiture
stylo
papier
porte
masa
Există modalități alternative de a crea un dicționar în Python utilizând dict
constructor. Câteva exemple de creare a aceluiași Dicționar ID-ul
utilizând dict
sunt după cum urmează:
ID = dict (nume = 'Abder-Rahman', număr = 1234)
ID = dict ([('nume', 'Abder-Rahman'), ('număr', 1234)])
ID = dict (zip (['nume', 'număr'], ['Abder-Rahman', 1234]))
Există mai multe lucruri pe care le puteți face cu dicționarele. Verificați documentația Python pentru mai multe informații.