Een soepele opfrissing van de woordenboeken van Python

In een vorige tutorial sprak ik over een zeer veelzijdig en flexibel objecttype in Python, namelijk lijsten. In dit artikel ga ik verder met mijn vernieuwers met een ander flexibel Python-objecttype genaamd Woordenboeken (ook wel genoemd associatieve matrices of hashes). Net als de lijst is het woordenboek een belangrijk concept om te begrijpen om verder te gaan in je Python-reis.

Wat is een woordenboek hoe dan ook?

Als je door de lijsten artikel zal het concept van woordenboeken gemakkelijk te begrijpen zijn. Ze lijken veel op Lijsten, maar met twee belangrijke verschillen: 

  1. Het zijn ongeordende sets (in tegenstelling tot lijsten die zijn besteld).
  2. Toetsen worden gebruikt om items te openen en geen positie (d.w.z. inhoudsopgave).

Elke sleutel in het woordenboek heeft een waarde, die van elk Python-objecttype zou kunnen zijn. Dat wil zeggen, Woordenboeken kunnen worden beschouwd als sleutel waarde paren. Maar wees voorzichtig sleutels kan niet van het type Lijst of Woordenboek zijn.

Laten we een Engels-Frans woordenboek maken

Zoals we in het vorige gedeelte hebben gezien, is een woordenboek gewoon een ongeordende set sleutel / waarde-paren. Laten we dit concept gebruiken om ons eerste voorbeeld te maken, een Engels-Frans woordenboek. Dit woordenboek kan als volgt worden gemaakt:

english_french = 'paper': 'papier', 'pen': 'stylo', 'car': 'voiture', 'table': 'table', 'door': 'porte'

Het woordenboek Engels Frans bevat vijf Engelse woorden ingesteld als sleutels met hun Franse betekenissen ingesteld als waarden

Laten we zeggen dat we wilden weten hoe te zeggen pen in het Frans. We doen gewoon het volgende:

english_french [ 'pen']

waar je zult komen stylo als de waarde terugkeerde.

Dingen interessanter maken

Laten we zeggen dat we een french_spanish Woordenboek met dezelfde woorden die we hadden in de Engels Frans Woordenboek, als volgt:

french_spanish = 'papier': 'papel', 'stylo': 'pluma', 'voiture': 'coche', 'table': 'mesa', 'porte': 'puerta'

Nou, je bent gevraagd hoe te zeggen deur- in het Spaans, en je hebt geen Engels-Spaans woordenboek bij de hand! Maar maak je geen zorgen, er is een oplossing. Raadpleeg uw Engels Frans Woordenboek voor het woord, gebruik vervolgens het resultaat om het te raadplegen french_spanish Woordenboek. Heb je gelijk? Laten we eens kijken hoe we dat in Python kunnen doen:

french_spanish [english_french [ 'deur']]

Het resultaat zou moeten zijn puerta. Is dat niet erg leuk? Je hebt zojuist het woord voor deur- in het Spaans, hoewel je geen Engels-Spaans woordenboek hebt.

Meer bewerkingen op woordenboeken

In het vorige voorbeeld hebben we gezien hoe we een woordenboek kunnen maken en items in het woordenboek kunnen openen. Laten we wat meer bewerkingen bekijken die we kunnen maken op Woordenboeken. Ik ga de gebruiken Engels Frans Woordenboek in de onderstaande voorbeelden.

Hoeveel vermeldingen staan ​​er in het woordenboek??

Met andere woorden, deze bewerking is bedoeld om het aantal sleutel / waarde-paren in het woordenboek te retourneren. Dit kan worden uitgevoerd met behulp van de len () operator, als volgt:

len (english_french)

Je zou moeten krijgen 5 teruggekeerd.

Een sleutel verwijderen

De verwijdering van een item in een woordenboek wordt uitgevoerd via de sleutels. Laten we bijvoorbeeld zeggen dat we het woord (sleutel) wilden verwijderen deur- van het woordenboek. Dit kan eenvoudig als volgt worden gedaan:

del english_french ['door']

Hiermee verwijdert u de sleutel deur- samen met zijn waarde porte.

Bestaat de sleutel in het woordenboek??

In het vorige subgedeelte hebben we de sleutel deur- van het woordenboek. Als we willen controleren of deur- bestaat nog steeds in het woordenboek of niet, we typen:

'deur' in english_french

welke zou moeten terugkeren vals.

Dus, wat denk je dat de volgende verklaring zal terugkomen? Ga je gang en probeer het eens niet).

'deur' niet in het Engels

Wat gebeurt er als we proberen toegang te krijgen tot een sleutel dat bestaat niet in een woordenboek? Zeggen english_french [ 'deur']. In dit geval zou u een foutmelding krijgen die lijkt op het volgende:

Hertraceren (meest recente oproep als laatste)

  Bestand "dictionary.py", regel 7, in

    print english_french ['door']

KeyError: 'deur'

Een kopie van uw woordenboek maken

Mogelijk hebt u een kopiëren van uw Engels Frans Woordenboek en wijs dat toe aan een ander woordenboek. Dit kan eenvoudig worden gedaan met behulp van de kopiëren() functie, als volgt:

new_english_french = english_french.copy ()

Geneste woordenboeken

Zoals we hierboven vermeldden, kunnen waarden in Woordenboeken van elk type zijn, inclusief Woordenboeken. Dit wordt aangeduid als nesting. Een voorbeeld hiervan kan als volgt zijn:

student = 'ID': 'name': 'Abder-Rahman', 'number': '1234'

Dus als je typt student [ 'ID'], je zou moeten krijgen:

'naam': 'Abder-Rahman', 'nummer': '1234' 

Itereren over een woordenboek

Laten we teruggaan naar de Engels Frans Woordenboek. Er zijn veel manieren waarop u de woorden van de Dictionary kunt herhalen:

for word in english_french:

    print woord

Het resultaat van deze verklaring is als volgt:

auto

pen

papier

deur-

tafel 

Merk op dat de sleutels in het resultaat worden niet in dezelfde volgorde gegeven als in de Engels Frans Woordenboek. Je kunt nu zien waarom ik zei dat Woordenboeken als ongeordende sets worden beschouwd.

Een andere manier om door te werken sleutels is als volgt:

for word in english_french.iterkeys ():

    print woord

Merk op dat we de iterkeys () functie. Een vergelijkbare functie die kan worden gebruikt om de waarden te doorlopen, namelijk itervalues ​​(), is als volgt:

voor betekenis in english_french.itervalues ​​():

    betekenis afdrukken

Het resultaat in dit geval zou er ongeveer als volgt uit moeten zien:

voiture

stylo

papier

porte

tafel

Alternatieve manieren om woordenboeken te maken

Er zijn alternatieve manieren om een ​​woordenboek te maken in Python met behulp van de dict constructeur. Enkele voorbeelden van het maken van hetzelfde woordenboek ID kaart gebruik makend van dict zijn als volgt:

ID = dict (naam = 'Abder-Rahman', nummer = 1234)

ID = dict ([('name', 'Abder-Rahman'), ('number', 1234)])

ID = dict (zip (['name', 'number'], ['Abder-Rahman', 1234])) # sleutels en waarden als lijsten

Er is meer dat je kunt doen met Woordenboeken. Raadpleeg de documentatie van Python voor meer informatie.