O reîmprospătare netedă pe dicționarele Python

Î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.

Ce este un dicționar oricum?

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: 

  1. Sunt seturi neordonate (spre deosebire de liste care sunt ordonate).
  2. Cheile sunt utilizate pentru a accesa elementele și nu o poziție (adică. index).

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.

Să creați un Dicționar englezo-francez

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ă.

Efectuarea lucrurilor mai interesante

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.

Mai multe operații pe dicționare

Î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.

Câte înregistrări există în dicționar?

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 unei chei

Ș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.

Cheia există în dicționar?

Î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șă"

Crearea unei copii a dicționarului dvs.

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 ()

Dicționare nesigure

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' 

Iterând peste un dicționar

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

Căi alternative de creare a dicționarelor

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.

Cod